我正在使用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);
}
简单:
List requiredTags = null;
。
XRImage getImage1=acquisitionParamsManager.getImage(imgId,requiredTags);
您正在为该列表传递空!请尝试使用空列表。如果这是一个java.util.List;您实际上是在创建一个原始泛型类型;而且你应该做一些像List<Whatever>
这样的事情!
您是否希望使用imageParamsMap
模拟对象而不是_paramsMap
实例变量?
如果是这样,则需要在调用该方法之前以某种方式将imageParamsMap
设置为 acquisitionParamsManager
。例如,假设有一个可用的二传手:
acquisitionParamsManager.setParamsMap(imageParamsMap);
XRImage getImage1 = acquisitionParamsManager.getImage(imgId, requiredTags);
如果没有可用的二传手,模拟注射将是另一种选择。除此之外,如果没有引发异常的其他代码和/或行号,就很难进行调试。
不相关,但在测试用例中调用addImage()
实际上不会完成任何事情。如果要验证是否调用了此方法,请尝试在断言后添加此语句:
verify(imageParamsMap).addImage(imgId);