【发布时间】:2015-12-11 12:02:40
【问题描述】:
productsInDatabse 是一个 hashMap,输出是枚举,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);
}
但是 when()...then() 返回 NPE。我在调用时看到的例子就是这样的。所以我的问题是错误在哪里,因为我认为 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
【问题讨论】:
-
请添加堆栈跟踪。
-
方法
isInDataBase是最终的吗? -
不,它是 public static boolean isInDataBase(int code)
-
您正在从非静态上下文中调用静态方法。此外,您不能模拟静态方法。