Clover是一款量度单元测试代码覆盖率(Code Coverage)的软件,用于检测Java单元测试是否完整覆盖代码中所有可能的路径。
Clover主要有以下几个优点:
快速、准确地检测测试是否覆盖代码中的所有路径
可以集成在多个IDE中,如Eclipse、NetBeans、jBuilder等
统计和分析结果可以导出为多种格式,如PDF、HTML
下面介绍的是在Eclipse中安装Clover插件进行统计代码测试覆盖率的方法。
一、安装Clover插件
打开Eclipse顶部菜单中的Help->Install New Software...,在弹出的窗口中点击右边的Add按钮,添加Clover插件的网络下载地址。
点击OK后,系统会在网上查找到Clover插件,等结果出来后我们勾选上Clover 3.1.12之后点击Next进行正常的安装过程,安装过程中需要下载Clover插件,可能会比较慢。
二、输入License Key
Clover不是免费的软件,我们有30天的免费试用期。我们可以到网站http://my.atlassian.com/上注册并获取License Key。
打开Preferences->Clover->License
点击Paste按钮把License Key粘贴进去,然后OK
三、在Java项目中启用Clover
假设我们已经有了一个名为CloverTest的项目,右键项目名,然后找到Clover选项,Enable。
然后在界面上会有四个Clover的选项卡出来。
Coverage Explorer
Test Run Explorer
Test Contribtions
Clover Dashboard
四、编写jUnit测试代码
Calculator.java
package com.raysmond;
public class Calculator {
public int add(int a, int b) {
return a + b;
}
public int subtract(int a, int b) {
return a - b;
}
public int multiply(int a, int b) {
return a * b;
}
public int divide(int a, int b) {
return a / b;
}
public void unCoveredMethod(){
// do nothing
System.out.println(" uncovered method...");
}
}
TestCalculator.java
package com.raysmond.test;
import static org.junit.Assert.*;
import org.junit.Test;
import com.raysmond.Calculator;
public class TestCalculator {
Calculator calc = new Calculator();
@Test
public void testAdd() {
assertEquals(10,calc.add(4, 6));
}
@Test
public void testSubtract() {
assertEquals(-2,calc.subtract(4, 6));
}
@Test
public void testMultiply() {
assertEquals(24,calc.multiply(4, 6));
}
@Test
public void testDivide() {
// divide方法没有错,其实是测试代码有问题,呵呵
assertEquals(9,calc.divide(40, 5));
}
}
在界面上我们可以看到一些方法的背景是红色的,这表示这些代码没有在Clover的测试中覆盖到,这是因为我们目前还没有运行过测试代码。
五、运行测试,查看Clover统计和分析结果
在运行结果中我们可以看到jUnit的测试统计以及Clover的详细统计
在编辑界面上,测试覆盖到并且通过测试的代码会用绿色来标识,而没有测试到的代码已经测试没有通过的代码用红色来标识。没有意义的代码,当然Clover会聪明地忽略掉。