![](/img/trans.png)
[英]Getting NullPointerException performing unit-testing with Mockito
[英]Getting NullpointerException in Mockito
我有以下實際方法:
public ResponseEntity<Message> catEnter(@PathVariable("catId") BigInteger catId, @RequestBody Catrequest catReq, HttpServletRequest request) throws CatDataException, InvalidCatExcecatption {
Message message = new Message();
try {
message = catManager.submitData(catReq.getMessage(), catId, request);
} catch (IOException e) {
throw new CatDataAppException(e.getMessage());
}
return (ResponseEntity<Message>) restResponse(message, request.getMethod());
// Getting null pointer exception in above line
}
我使用mockito作為我的測試代碼如下:
@Test
public void submitData() throws Exception {
Message mes = new Message();
mes.setCode("00");
mes.setMessage("hi");
ResponseEntity<Message> responseentity = ((ResponseEntity<Message>) catController.catEnter(BigInteger.valueOf(3431), catRequest, mockRequest));
}
我得到空指針異常,消息作為null,即使我明確設置值?
這里:
在調用生產代碼時傳遞mockRequest
:
ResponseEntity<Message> responseentity = ... catController.catEnter(... mockRequest));
你的生產電話會:
return (ResponseEntity<Message>) restResponse(message, request.getMethod());
所以唯一的mockRequest
是: mockRequest
是空的!
所以,首先要確保傳遞的變量不為 null; 喜歡:
Request mockedRequest = mock(Request.class);
或者,如果mockedRequest
是測試類中的字段,請使用@Mock注釋。
最重要的是; 你可能想做一些模擬規范,比如:
when(mockedRequest.getMethod()).thenReturn( whatever )
但除此之外,您缺少Java的許多基礎知識:
entityResponse
類似。 通常,測試命名為testCatEnter
來表示測試的方法。 mes
聲明一樣。 長話短說:我覺得你自己負擔過重了。 首先要學習基礎知識; 然后去找先進的Mockito東西。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.