我是使用 Mockito 进行 JUnit 测试的新手。我正在努力找出“测试逻辑”问题,其中之一是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);
}
在这种情况下,我应该使用浅存根还是深存根?或者我可以遵循任何规则来编写合理的测试吗?
提前感谢您的帮助。