Ant+JUnit+EMMA 单元测试覆盖率
作者:网络转载 发布时间:[ 2014/7/28 14:31:04 ] 推荐标签:软件测试 单元测试
EMMA,它是一个免费、开源的、用来衡量单元测试覆盖度的工具。
三者结合,利用EMMA产生的测试覆盖度报考,可以一目了然的知道那部分代码已经被测试,哪部分没有,从而控制单元测试的质量。
EMMA生成的报告类似于Cobertura(另一个功能类似于EMMA的开源工具),请参考:用Ant+JUnit+Cobertura轻松控制单元测试质量: http://ouzhong.blog.hexun.com/32368833_d.html EMMA的优势在于更加轻量级,速度快,同时EMMA目前还在更新中。而Cobertura原开发团队转去做收费工具JCoverage之后,很少有更新。
下面是一个本人测试能用的例子,Ant的配置文件。稍加修改能用到你的项目中。
注:需把下载的EMMA jars 放到lib文件夹中。http://emma.sourceforge.net/
-->
metrics="method:70,block:80,line:80,class:100">
columns="name,class,method,block,line" encoding="UTF-8"/>
应用中遇到的问题及扩展:
1、其他功能正常,但是单元测试覆盖率死活出不来也没有报错。查看ant运行内容,发现instrument(对编译在路径 ${classes.src} 中的Java类注入字节码)部分和gen-report-coverage(产生覆盖报告)部分始终没有执行内容。纠结排查了很久,发现原因竟然是这句中true后面多了个空格,导致emma.enabled无效,
白白浪费了n多时间....
2 、无论 java 源文件使用 UTF-8 还是 GB2312/GBK ,报告中的中文都显示为问号或乱码。
参考资料: http://emma.sourceforge.net/reference/ch02s04s02.html
解决方法:
将
改为
此时, java 类的编码要使用 gb2312 或者 gbk ,生成的报告中文显示正常;如果 java 文件使用 utf-8 ,则还是乱码。
3 、测试报告中没有 “ line, % 的报告,和具体 java 类的覆盖信息 ” ?
分析配置文件片段: < javac classpath = "${build.java.dir}" srcdir = "${src.java.dir}" destdir = "${build.java.dir}"
fork = "true" source = "1.5" target = "1.5" debug = "true" >
< classpath refid = "compile.classpath" />
分析结果:发现编译时,没有设置 debug 属性,增加 debug = "true" 或 debug="on" 后,问题解决。
4、emma的示例代码里面,report的sourcepath属性只有一个src路径,如果项目里面有多个src路径同时要进行覆盖率检查的话,则需要这样写:
...
不同的src路径用操作系统的classpath分隔符或逗号隔开,比如window用分号隔开,官网是这样解释的:
参考资料部分
1 、 EMMA 官方网址:( http://emma.sourceforge.net/ )
文档: http://emma.sourceforge.net/reference/reference.html
http://emma.sourceforge.net/docs.html#Reference+Documentation
3 、 可爱的 MMA :测试 覆 盖率工具
4 、 用 Emma 的 Eclipse 插件进行代码覆盖率测试
5 、 测试覆盖率工具汇总
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11