1

私はmockitoを使用して、統合テストですでにテストされているアプリケーションの単体テストをいくつか作成していますが、単体テストも開発する必要があります。

これはテスト用のコードです:

public class TestResourceB {

@Mock
ResourceB b;
@Mock
ResourceC c;

@Before
public void setup() {
    MockitoAnnotations.initMocks(this);
    TestObjects.InitializeObjects();
}

@Test
public void testMethodResourceA() {
    when(b.callFuncA()).thenCallRealMethod();
    when(b.callFuncB()).thenReturn(TestObjects.mockedListA);
    when(b.callFuncC((B)anyVararg())).thenCallRealMethod();
    when(c.callFuncB()).thenReturn(TestObjects.mockedListB);
    when(c.callFuncA()).thenCallRealMethod
    String output = b.callFuncA();
}
}

これはクラス ResourceB です

public class ResourceB {

ResourceC c = new ResourceC();

public String callFuncA(){
    /*Calling callFuncB and doing some other stuff*/
    String test = callFuncC(arg1);
}

public List<A> callFuncB() {
    /*returns the mocked list A*/
}

public String callFuncC(B arg1) {
String test2 = c.callFuncA();   // It crashes here
/*doing some other stuff*/
}
}

これはクラスResourceCです

public class ResourceC {
public String callFuncA() {
    /*Calling callFuncB and doing some other stuff*/
    return testString;
}

public List<B> callFuncB() {
/*return a List*/
}
}

私が抱えている問題は、クラス ResourceB のメソッド callFuncC で、行が

String test2 = c.callFuncA();

が呼び出され、NullPointerException が発生します

なぜこれが起こっているのでしょうか?

4

1 に答える 1