一、简述
eclemma是一个Eclipse的java代码覆盖测试工具插件,使用它的主要目的有两个:
打开Coverage面板
可以看到图中显示了每个方法的运行覆盖率,图中的PrinterTest是一个单元测试用例,由于直接执行Printer的main方法,单元测试类没有被执行,因此为0.0%。
1、用于编码过程中检查运行中代码调用的覆盖情况,对编码进行改进。
2、检查单元测试用例的覆盖率。
二、下载
三、Eclipse下的安装
在eclipse下安装插件很简单,直接复制eclemma-2.1.0文件夹到eclipse安装目录下的dropins文件夹下即可,比如安装在d盘则复制到这里:D:\Program Files\eclipse\dropins\eclemma-2.1.0,重新启动eclipse,你应该能看到工具栏上出现的新图标:
,这就ok。
四、MyEclipse下的安装
本人用的是MyEclipse8.5,直接复制是不行的,安装时参考了郑一小的
“myeclipse9.1安装插件的方法”
,运行他提供的代码后,在控制台输出了一些插件信息,如图:
把这些内容复制到MyEclipse安装目录下的bundles.info文件最后保存即可,本人的MyEclipse安装在D盘,bundles.info文件具体位置:“D:\Program Files\Genuitec\MyEclipse 8.5\configuration\org.eclipse.equinox.simpleconfigurator\bundles.info”。
把这些内容复制到MyEclipse安装目录下的bundles.info文件最后保存即可,本人的MyEclipse安装在D盘,bundles.info文件具体位置:“D:\Program Files\Genuitec\MyEclipse 8.5\configuration\org.eclipse.equinox.simpleconfigurator\bundles.info”。
完成以上工作MyEclipse里面仍然没有出现新图标,此时进行一下操作:在工具栏上点击右键,选择Customize Perspective,如图:
展开Launch,勾选其中的Converage即可,如图:
这下显示了:
展开Launch,勾选其中的Converage即可,如图:
这下显示了:
五、用一个简单的程序测试效果
public class Printer {
public String printHi(String name){
if("tom".equals(name))
return "hi!"+name;
else
return "go to hell.";
}
public static void main(String[] args) {
Printer p = new Printer();
p.printHi("tom");
//p.printHi("dom");
}
}
绿色表示完全执行的代码,红色表示没有执行到的代码,黄色执行了一部分一般是分支,此时可以查看代码的覆盖率,点击菜单中的Window->Show View->Other,找到Java下的Converage:
打开Coverage面板
可以看到图中显示了每个方法的运行覆盖率,图中的PrinterTest是一个单元测试用例,由于直接执行Printer的main方法,单元测试类没有被执行,因此为0.0%。
六、单元测试的覆盖率
下面是单元测试用例的代码:
import org.junit.Test;
public class PrinterTest {
@Test
public void testPrintHi() {
Printer p = new Printer();
String actual = p.printHi("tom");
String expected = "hi!tom";
Assert.assertEquals(expected, actual);
}
}
只用JUnit执行该测试用例后,再次查看代码覆盖率:
由于执行单元测试,main方法不被执行,因此覆盖率为0.0%。printHi方法的覆盖率没有达到100%说明测试用例的覆盖度不够,分析一下用例代码发现我们只测试了if条件的一种情况,此时若补充另外一种情况的测试用例,printHi方法的覆盖率将达到100%。
由于执行单元测试,main方法不被执行,因此覆盖率为0.0%。printHi方法的覆盖率没有达到100%说明测试用例的覆盖度不够,分析一下用例代码发现我们只测试了if条件的一种情况,此时若补充另外一种情况的测试用例,printHi方法的覆盖率将达到100%。
可以看出使用Eclemma能够很方便的了解我们的代码和测试用例的编写质量,可以用来提高开发水平。
七、测试覆盖率历史及合并计算