2015-12-11 4 views
0

productsInDatabse является HashMap, выход на перечисление, скан от класса, который испытываетсяMockito, когда() ... затем() NullPointerException

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. Я видел примеры при вызове именно так. Поэтому мой вопрос в том, где ошибка, потому что я думал, когда() ... тогда() работает нравится это.

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 
+0

Добавьте стопку, пожалуйста. – Jens

+0

Является ли метод 'isInDataBase' окончательным? – wjans

+0

Нет, это public static boolean isInDataBase (int code) – meDarq

ответ

1

Вы не можете издеваться static метод с Mockito; вам понадобится PowerMock.

Смежные вопросы