【发布时间】:2008-10-31 14:01:10
【问题描述】:
我最近开始使用代码覆盖工具(尤其是 Emma 和 EclEmma),我非常喜欢它为我提供的关于单元测试完整性的观点 - 以及查看单元代码的哪些区域的能力测试根本没有命中。我目前在一个不做大量单元测试的组织工作,我计划真正推动每个人进行单元测试和代码覆盖率和 TDD,并希望改变组织。
对于这个主题,我不确定的一个问题是我应该将代码覆盖率究竟走多远。例如,如果我有这样的类:
//this class is meant as a pseudo-enum - I'm stuck on Java 1.4 for time being
public final class BillingUnit {
public final static BillingUnit MONTH = new BillingUnit("month");
public final static BillingUnit YEAR = new BillingUnit("year");
private String value;
private BillingUnit(String value) {
this.value = value;
}
public String getValue() {
return this.value;
}
public boolean equals(Object obj) {
return value.equals(((BillingUnit) obj).getValue());
}
public int hashCode() {
return value.hashCode();
}
}
我编写了一些简单的单元测试以确保 equals() 正常工作,getValue() 返回我所期望的,等等。但是由于 EclEmma 的视觉特性,hashcode() 方法显示为亮红色“未测试”。
在这个例子中,考虑到实现有多简单,是否值得费心去测试hashCode()?我觉得我会为此方法添加一个单元测试,只是为了提高代码覆盖率,并摆脱 EclEmma 在这些行中添加的刺眼的红色突出显示。
也许我有点神经质和类似强迫症,但我发现使用 EclEmma 之类的东西可以很容易地查看未测试的内容 - 该插件以红色突出显示源代码,并以绿色突出显示代码 - 确实让我希望尽可能多地获得 100% 绿色的课程 - 即使它不会增加太多好处。
【问题讨论】:
标签: java tdd code-coverage emma