3

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);
  }
}
4

2 に答える 2

1

お互いのメソッドを呼び出すクラスがあるので、使用する方が良いMockito.RETURNS_DEEP_STUBS

あなたの場合:

A呼んBBいる 呼んでいる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);
于 2020-08-26T06:20:52.397 に答える