首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring : JAXBElement空指针异常

Spring : JAXBElement空指针异常
EN

Stack Overflow用户
提问于 2021-04-26 18:42:12
回答 1查看 118关注 0票数 0

我对Junit 5和Mockito框架完全陌生。现在,我正在尝试为该函数实现JUnit测试用例。有人可以帮助模拟,因为下面的测试实现会在指定的行抛出一个NullPointerException。

代码语言:javascript
复制
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   

        }
}

单元测试

代码语言:javascript
复制
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());
   }
}
EN

回答 1

Stack Overflow用户

发布于 2021-04-26 20:31:05

这句话在我看来很奇怪:

代码语言:javascript
复制
        JAXBElement<SubDTO> jax = new JAXBElement <> (any(), any(), any());

any()是一个匹配程序,仅在设置模拟或验证时使用。它总是返回null

基本上,您所编写的代码将执行如下操作:

代码语言:javascript
复制
        JAXBElement<SubDTO> jax = new JAXBElement <> (null, null, null);

与其传递null值,不如将该类的QName、类和实例作为参数传递给JAXBElement构造函数。

但是,当我试图运行您的代码时,我没有得到一个NullPointerException。我在上面的一行得到了一个IllegalArgumentException,抱怨null值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67272119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档