报告左边是包名,以及包下边的类;右边是主窗口,显示当前这个Money类的测试覆盖率,我们可以通过行号来查看到15、16、17行执行了156次,下边还会有两行一次也没有执行过,所以造成这个类整体的测试覆盖率不是100%。
四、重构测试代码实现百分百测试覆盖率
我们总是希望做单元测试的时候,让代码的测试覆盖率尽可能的达到100%,所以我们需要重构测试代码。从分析得知,第40行虽然执行了27次,但是从来没有测试if的判断条件为true的情况,所以我们要添加测试用例,测试isZero()返回为true的情况!因此,我们修改测试代码MoneyTest.java文件,在前边初始化地方加上一个Money实例,如下:
public class MoneyTest extends TestCase {
private Money f12CHF;
private Money f14CHF;
private Money f7USD;
private Money f21USD;
private Money f0USD;
在setup方法里添加:
protected void setUp() {
f12CHF= new Money(12, "CHF");
f14CHF= new Money(14, "CHF");
f7USD= new Money( 7, "USD");
f21USD= new Money(21, "USD");
f0USD = new Money(0, "USD"); //sincky
在后加上一个测试用例:
public void testMoneyEqualsZero() {
assertTrue(!f0USD.equals(null));
IMoney equalMoney = new Money(0, "CHF");
assertTrue(f0USD.equals(equalMoney));
}
之后,我们重新编译,测试,创建报告,即执行下列命令:
>ant clean
>ant clover compile
>ant test
>ant report
这时候再打开新的html报告,看到如下效果覆盖率已经到达100%:
完毕,如果能进展到这一步,相信你已经对使用junit、ant、clover做java的单元测试,已经到了一个新的飞越!如果有兴趣,你还可以把junit报告和clover报告一并输出,以更好的为企业开发中使用这种工作模式!
文章源码均来自clover网站,本人稍做修改。