<分区>
我最近开始使用代码覆盖工具(特别是 Emma 和 EclEmma),我真的很喜欢它给我的单元测试完整性的 View - 以及查看单元代码的哪些区域的能力测试根本没有命中。我目前在一个不进行大量单元测试的组织工作,我计划真正插入每个人进行单元测试、代码覆盖率和 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% 绿色类(class) - 即使它不会增加太多好处。