Mockito を使用した JUnit テストは初めてです。「テストロジック」の問題を理解するのに苦労しています。その1つは、stub の深さです。
簡単な例を挙げましょう。
まず、これがテスト対象のクラスであると仮定しましょう。
Class ToBeTested {
public int a1() {}
public int a2() {}
public int a3() {}
public int A() {
return a1() + a2() + a3();
}
public int B() {
temp = A();
return temp++;
}
}
JUnit テストを作成しようとすると、これらのメソッドをスタブ化する方法がわかりません。例えば:
@Test
public void testB() {
ToBeTested mockedTBT = mock(ToBeTested.class);
/*
*Problem here: How Deep to stub?
*/
//shallow stubbing
BDDMockito.given(mockedTBT.A()).willReturn(6);
//deep stubbing
BDDMockito.given(mockedTBT.a1()).willReturn(1);
BDDMockito.given(mockedTBT.a2()).willReturn(2);
BDDMockito.given(mockedTBT.a3()).willReturn(3);
int expected = 7;
int result= mockedTBT.B();
assertEquals(expected, result);
}
この場合、浅いスタブまたは深いスタブを使用する必要がありますか? または、合理的なテストを作成するための規則に従うことはできますか?
よろしくお願いいたします。