我对Junit 5和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());
}
}发布于 2021-04-26 20:31:05
这句话在我看来很奇怪:
JAXBElement<SubDTO> jax = new JAXBElement <> (any(), any(), any());any()是一个匹配程序,仅在设置模拟或验证时使用。它总是返回null。
基本上,您所编写的代码将执行如下操作:
JAXBElement<SubDTO> jax = new JAXBElement <> (null, null, null);与其传递null值,不如将该类的QName、类和实例作为参数传递给JAXBElement构造函数。
但是,当我试图运行您的代码时,我没有得到一个NullPointerException。我在上面的一行得到了一个IllegalArgumentException,抱怨null值。
https://stackoverflow.com/questions/67272119
复制相似问题