spring引导:jaxbelement空指针异常

v2g6jxz6  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(332)

我对JUnit5和mockito框架完全陌生。现在我尝试为函数实现junit测试用例。有人能帮忙模拟一下吗,因为下面的测试实现在指定的行抛出一个nullpointerexception。

Class XYZ{

       @Autowired
       private SoapCall soapCall;

       public void validate(){

                 //code....

            JAXBElement <SubDTO> jax = (JAXBElement <Sub_DTO>) soapCall.callSoapService(val1, val2, val3, val4, val5);

            SubDTO  response = jax.getValue();  // Getting null pointer exception while Unit testing at this line   

        }
}

单元测试

Class TestValid{

   @Mock
   SoapCall soapCall;

   @InjectMocks
   XYZ xyzzy;

   @BeforeEach
   void setUp(){
      MockitoAnnotations.initMocks(this);
   }

   @Test
   public void test1(){
        SubDTO dto= new SubDTO("a","b","c");

        JAXBElement<SubDTO> jax = new JAXBElement <> (any(), any(), any());

        jax.setValue(dto)            

   Mockito.when(soapCall.callSoapService(any(),any(),any(),anyInt(),anyInt())).thenReturn( jax );

        Assertions.assertDoesNotThrow(()->xyz.validate());
   }
}
chhkpiq4

chhkpiq41#

我觉得这句话很奇怪:

JAXBElement<SubDTO> jax = new JAXBElement <> (any(), any(), any());
``` `any()` 是匹配器,仅在设置模拟或验证期间使用。它总是回来 `null` .
基本上,您所编写的代码将执行以下操作:

JAXBElement jax = new JAXBElement <> (null, null, null);

而不是过去 `null` 值,传入 `QName` ,一个类和该类的一个示例作为 `JAXBElement` 建造师。
但是,我没有得到 `NullPointerException` 当我试图运行你的代码时。我收到一封信 `IllegalArgumentException` 在上面的那行,抱怨 `null` 价值观。

相关问题