Mockito when()…then() NullPointerException

人盡茶涼 提交于 2020-01-07 03:04:55

问题


productsInDatabse is a hashMap, output is enum, scanCode is from class which is tested

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

and I've got a test:

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

}

But when()...then() returns with NPE. I saw examples when invoking was exactly like this. So my question is where is the bug, because I thought when()...then() works likes that.

Stacktrace:

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

回答1:


Remove the static from your isInDataBase() declaration.

See this if you can't remove the static: Mocking static methods with Mockito




回答2:


You can't mock static methods with Mockito; you'll need PowerMock for that.



来源:https://stackoverflow.com/questions/34223126/mockito-when-then-nullpointerexception

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!