2017-02-13 85 views
2

我在寫一個使用Mockito的JUnit測試用例,我得到一個NullPointerException。Mockito引發的JUnit測試用例拋出NullPointerException

商業行爲準則

public XRImage getImage(String imgId, List tagList) { 
    _paramsMap.printContent(); 
    return _paramsMap.getImage(imgId, tagList); 
} 

測試代碼

@Test 
public void getImageTest() { 
    String imgId = new String("Test"); 
    List requiredTags = null; 
    XRImage xRImage = Mockito.mock(XRImage.class); 
    ImageParamsMap imageParamsMap = Mockito.mock(ImageParamsMap.class); 
    imageParamsMap.addImage(imgId); 
    when(imageParamsMap.getImage(imgId, requiredTags)).thenReturn(Mockito.mock(XRImage.class)); 
    XRImage getImage1 = acquisitionParamsManager.getImage(imgId, requiredTags); 
    assertNotNull(getImage1); 
} 
+1

你如何初始化'acquisitionParamsManager'?你需要在這個對象中注入模擬 –

+0

我使用@InjectMocks – bhavya

回答

0

簡單:

List requiredTags = null; 

...

XRImage getImage1=acquisitionParamsManager.getImage(imgId,requiredTags); 

您傳遞該名單!請嘗試使用空的列表。 如果這是一個java.util.List;你實際上創建了一個原始泛型類型;而你應該寧願做一些類似List<Whatever>的事情!

0

您是否期望使用imageParamsMap模擬對象代替_paramsMap實例變量?

如果是這樣,您將需要以某種方式設置acquisitionParamsManagerimageParamsMap調用方法之前。例如,假設有可用的二傳手:

acquisitionParamsManager.setParamsMap(imageParamsMap); 
XRImage getImage1 = acquisitionParamsManager.getImage(imgId, requiredTags); 

素注射劑則是另一種選擇,如果沒有setter可用。除此之外,如果沒有其他代碼和/或行號引發異常,則很難進行調試。


無關,但在您的測試用例中調用addImage()實際上並沒有完成任何操作。如果你想驗證這個方法被調用,然後試着在你聲明後添加這個語句:

verify(imageParamsMap).addImage(imgId); 
相關問題