【发布时间】:2018-04-27 03:39:53
【问题描述】:
从 TDD 的角度来看,我了解到,当某些行为出现问题时,只有一个测试会失败 - 其他失败通常会产生误导。如果这是真的,我有两个比较器,其中一个比较器使用另一个比较器,你如何测试这个?我正在考虑为“子比较器”使用模拟,但是当例如使用“父比较器”对列表进行排序时,你将如何注入这个模拟?
例如:
public class SomeParentComparator implements Comparator<SomeType> {
private static final SomeSubComparator subComparator1 = new SubComparator();
private static final SomeOtherSubComparator subComparator2 = new SomeOtherSubComparator();
@Override
public int compare(SomeType someType1, SomeType someType2) {
return new CompareToBuilder()
.append(someType1.foo, someType2.foo, subComparator1)
.append(someType1.bar, someType2.bar, subComparator2)
.toComparison();
}
}
在上面,假设我已经测试了“子比较器”(SomeSubComparator 和 SomeOtherSubComparator)。在这种情况下如何测试 SomeParentComparator 而不对子比较器有“真正的依赖”(例如,模拟子比较器)?真的,这应该以某种方式成为“工作流程”单元测试,并确保调用“子比较器”,对吗?怎么样?
【问题讨论】:
-
你能展示一个代码示例吗?
-
刚刚添加。我很快就编好了,所以希望不会有太多的 type-o :)
-
您可以创建一个模拟数据,其中子比较器比较无关紧要。
-
@ShanuGupta 不知道你的意思 - 以及如何?此外,如果这应该是一个答案,它应该写成一个答案,而不是一个答复。它只是在这里增加了噪音。
标签: java unit-testing tdd comparator