[英]Using Mockito but getting null pointer exception when running the test case
[英]Mockito when() method not working and getting null pointer exception
我正在使用 Mockito 和 JUnit 編寫單元測試用例。但是在運行測試時出現NullPointerException
。 在調試時,我了解到 Mockito on method: when().thenReturn()
沒有返回依賴方法的值,調用程序正在調用這些方法以獲得結果。
下面是我用來了解代碼結構的虛擬代碼:
class B {
public C getValue() {
return C;
}
}
class A {
public D getAns(String q1, String q2) {
return B.getValue().map(mapper::toD); //null pointer exception start here
}
}
@RunWith(MockitoJunitrunner.test)
class TestA {
@InjectMock
A a;
@Mock
B b;
C c;
init() {
when(b.getValue()).thenReturn(c);
}
@Test
public void getA() {
D ans=A.getAns(q1,q2); //getting null pointer exception here
AssertNotNull(ans);
}
}
不調用when(...).thenReturn(...)
原因可能有多種:
你有類調用彼此的方法,所以最好使用Mockito.RETURNS_DEEP_STUBS
在您的情況下:
A
呼叫B
,B
呼叫C
只需更換:
@InjectMock
A a;
@Mock
B b;
C c;
和 :
A a = Mockito.mock(A.class, Mockito.RETURNS_DEEP_STUBS);
B b = Mockito.mock(B.class, Mockito.RETURNS_DEEP_STUBS);
C c = Mockito.mock(C.class, Mockito.RETURNS_DEEP_STUBS);
使用@InjectMock 和@Mock 來解決這個問題
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.