[英]JUnit test case with Mockito throws 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);
}
简单:
List requiredTags = null;
...
XRImage getImage1=acquisitionParamsManager.getImage(imgId,requiredTags);
您正在为该列表传递null ! 请尝试使用一个空列表。 如果那是一个java.util.List; 您实际上是在创建原始通用类型; 而您应该宁愿做类似List<Whatever>
事情!
您是否希望使用imageParamsMap
模拟对象代替_paramsMap
实例变量?
如果是这样,您将需要以某种方式设置imageParamsMap
上acquisitionParamsManager
调用方法之前。 例如,假设有一个setter可用:
acquisitionParamsManager.setParamsMap(imageParamsMap);
XRImage getImage1 = acquisitionParamsManager.getImage(imgId, requiredTags);
如果没有可用的setter,模拟注入将是另一种选择。 除此之外,在没有其他代码和/或行号引发异常的情况下很难进行调试。
无关,但是在addImage()
调用addImage()
实际上并不会完成任何事情。 如果要验证是否调用了此方法,请尝试在断言之后添加以下语句:
verify(imageParamsMap).addImage(imgId);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.