Java测试代码覆盖率工具有Clover, Jcoverage和Emma等,其中只有Emma才算是彻底免费开源的,用起来也比较方便。
而Jcoverage使用起来就有些繁琐,必须一步步按照规定的方式走,步骤为 debug方式compile->instrument->test->coverage。
下面将简单介绍emma的使用,以下方法告诉你如以以命令的方式来生成代码测试覆盖率,当然你也可以写成 Ant 任务的方式,这就要求自己写几个 Ant 用的Task类,其实也不难。
emma的下载地址是:http://emma.sourceforge.net/downloads.html
在你的TestCase类中最好加上一个main方法,如下
1 2 3 4 |
<strong>public</strong> <strong>static</strong> <strong>void</strong> main(String[] args) { junit.textui.TestRunner.run(CatTest.<strong>class</strong>); } |
执行命令为
java -cp .\lib\junit.jar;.\lib\emma.jar emmarun -r html -sp .\src -cp .\bin com.unmi.CatTest
.需要指定junit.jar,emma.jar包,执行emmarun类的main方法
.-r 是用来指定生成报告的形式。Emma可以支持txt,html,xml格式的报告
.-sp 是用来指定原代码的路径的
执行成功之后在项目目录下多了个coverage目录,打开其中的index.html,可以看到结果报告,非常详细,会显示每一个走过类的报告,覆盖率及不同颜色标示出类中代码已覆盖代码行和未覆盖代码行
同时EMMA也支持把单个的测试类 com.unmi.CatTest 替换为相应的测试套类如 com.unmi.AllTests
同样,你必须在你的TestSuit类中加入一个main方法,如
1 2 3 4 |
<strong>public static void</strong> main(String[] args) { junit.textui.TestRunner.run(AllTests.suite()); } |
在 TestCase 或 TestSuit 中如果不加 main 方法,执行emmarun时会出现如下异常
Exception in thread "main" com.vladium.emma.EMMARuntimeException: [MAIN_METHOD_NOT_FOUND] application
但是不会影响到覆盖率报告的生成
[以后也将在此贴上一些用EMMA生成的覆盖率报告图片]
本文链接 https://yanbin.blog/emma-code-coverage-report/, 来自 隔叶黄莺 Yanbin Blog
[版权声明] 本文采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可。
加个友联吧
http://yiqizhuanba.cn