java - 我应该在单元测试中检查协作者的返回值吗?

标签 java unit-testing tdd

假设我在上课:

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/

相关文章:

java - 代码在我的计算机上运行良好,但在 "hackerearth"平台上在线运行时出现 NullPointerException

创建 JSONArray 时发生 Java JSONException

android - 如何对 android.graphics.Bitmap 和 BitmapFactory 进行单元测试?

ios - Xcode 单元测试 - 添加一个通用函数以在所有测试类中使用

c# - 测试驱动设计和分层架构

java - 来自 InputStream 的编年史字节

java - JSoup 是否找到所有图像

c# - 单元测试和验证逻辑

c# - 最小起订量 + 单元测试 - System.Reflection.TargetParameterCountException : Parameter count mismatch

tdd - 起订量和命令模式。我很挣扎,你能帮忙吗?