私は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 が発生します
なぜこれが起こっているのでしょうか?