[英]Spring Boot : JAXBElement null pointer exception
我對 Junit 5 和 Mockito 框架完全陌生。 現在我正在嘗試為 function 實現 JUnit 測試用例。 有人可以在 Mocking 中提供幫助,因為下面的測試實現在指定行拋出 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());
}
}
這條線在我看來很奇怪:
JAXBElement<SubDTO> jax = new JAXBElement <> (any(), any(), any());
any()
是一個匹配器,僅在設置 mocking 或驗證期間使用。 它總是返回null
。
基本上,您正在編寫與此相同的代碼:
JAXBElement<SubDTO> jax = new JAXBElement <> (null, null, null);
與其傳入null
值,不如傳入QName
、 class 和該 class 的實例作為JAXBElement
構造函數。
但是,當我嘗試運行您的代碼時,我沒有收到NullPointerException
。 我在上面的行中收到IllegalArgumentException
,抱怨null
值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.