我最近开始使用代码覆盖工具(特别是 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% 绿色的课程——即使它不会增加太多好处。