带有 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);
}

简单:

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);

相关内容

  • 没有找到相关文章

最新更新