Mockito when()... then()NullPointerException

时间:2015-12-11 12:02:41

标签: java junit mockito

productsInDatabse是一个hashMap,输出是enum,scanCode是来自测试的类

   public static boolean isInDataBase(int code) {
        return productsInDatabse.containsKey(code);
    }

我有一个测试:

@Test
public void testScanCodeForCodeNotFound() {

    Database db = Mockito.mock(Database.class);
    when(db.isInDataBase(444)).thenReturn(false);
    output = scanner.scanCode("444");
    assertTrue(output == ProductProcessing.PRODUCT_NOT_FOUND);

}

但是当()... then()返回NPE。我看到调用时的例子就是这样的。所以我的问题是bug在哪里,因为我认为when()... then()就像那样。

堆栈跟踪:

Testcase: testScanCodeForCodeNotFound(iodevices.BarCodesScannerTest):   Caused an ERROR
null
java.lang.NullPointerException
    at database.Database.isInDataBase(Database.java:66)
    at iodevices.BarCodesScannerTest.testScanCodeForCodeNotFound(BarCodesScannerTest.java:50)
    at org.mockito.internal.runners.JUnit45AndHigherRunnerImpl.run(JUnit45AndHigherRunnerImpl.java:37)
    at org.mockito.runners.MockitoJUnitRunner.run(MockitoJUnitRunner.java:62)


Test iodevices.BarCodesScannerTest FAILED

2 个答案:

答案 0 :(得分:2)

static声明中删除isInDataBase()

如果您无法删除静态内容,请参阅此内容:Mocking static methods with Mockito

答案 1 :(得分:1)

你不能用Mockito模仿static方法;你需要PowerMock