2017-02-13 84 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); 
相关问题