假设我在上课:
class A {
private B b;
private int milkQuantity;
A(B b) {
this.b = b;
}
public getCoffee() {
milkQuantity = b.getMilk(1);
return secretRecipe();
}
...
}
因此,在进行单元测试时,我应该模拟类 B
并检查是否调用了 getMilk()
方法,或者我应该检查它是否返回正确的牛奶量(即 1杯子)?对于后一种情况,我需要在我的单元测试中设置类 B
。
根据我的说法,我们需要在它自己的单元测试中检查类 B
的行为,类 A
应该只关心是否调用了正确的方法。
更新 1
让我的观点更清楚:
在调用 a.getCoffee()
时我应该测试:
assertThat(a.milkQuantity).isEqualTo(1);
或
verify(b).getMilk();
最佳答案
编写单元测试时,您需要在其自己的测试中处理每个单元(通常是一个类)。所以 B
需要自己的测试,而 A
需要使用 B
的模拟实例进行测试,以测试它是否正确使用它。你不需要检查 getMilk
的返回值(毕竟 - 你在 mock 它),但你需要检查 B
是否正确使用它 -即 secretRecipe
被调用时返回的值与 getMilk
相同。
关于java - 我应该在单元测试中检查协作者的返回值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35795011/