在Offline模式下使用Emma进行代码覆盖率检查(命令行方式) emmajava
程序员文章站
2022-05-11 12:28:21
...
开发工程师常常问到的一个问题是:测试用例执行了那么多,到底这些用例覆盖了多少的代码?那么在最终的测试报告中给出代码覆盖率是不是更加有说服力,因此这几天稍微看看了emma的东西,在这里记录下来用以备忘,这里只说off-line模式下emma使用命令行方式进行代码覆盖率统计。
off-line模式下使用emma一般来说包含三个步骤:
1)插桩-使用instr对于class文件(或者包含class文件的文件夹或者文件结构)
2)运行测试;
3)合并覆盖率统计数据-使用merge合并测试期间生成的统计数据;
4)输出统计报告-使用report生成
下面就使用方式进行说明:
1)前提准备:
将emma.jar加入jdk安装目录下的jre/lib/ext目录或者将emma.jar加入classpath环境变量中;
使用java emma调用显示emma的使用方式表示emma加入classpath成功;
2)instr:
java emma instr {-ip(/-cp) 插桩路径} [-d 插桩后的class文件输出目录] [-out 元数据文件输出位置] [-merge boolean] [-m 插桩模式] [-ix 插桩过滤] [commom options]
-ip -cp:该选项可以重复多次,用于指示要进行插桩的class文件,可以使用-ip来指示单个class文件,使用-cp来指示文件夹或者文件结构(jar);
-d:该选项指示插桩后的class文件保存位置,如果给定的插桩模式是overwrite的话该选项被忽略;
-out:指示存储统计信息文件的位置(默认统计信息存储在当前文件夹中);
-merge(y[es]|n[o]):指示统计信息是否可以被合并至-out参数指定的输出位置;
-m(copy|overwrite|fullcopy):指示插桩后的文件输出模式,copy表示只有那些进行了插桩的文件输出至-d指示的文件夹,overwrite表示覆盖原始文件,fullcopy表示复制所有的class文件(不论是否插桩)去-d/classes文件夹,所有文件结构(jar)去-d/lib文件夹;
-ix:插桩过滤器,指示那些文件进行插桩,可以重复用以指定多个过滤器;
3)report:
java emma report {-in 统计数据文件} {-r 输出文件格式} [-sp 源文件位置] [common options]
-in:可重复的参数,指示产生报告的统计数据文件;
-r(txt|html|xml):产生的报表文件的格式;
-sp:源文件所在位置,用于关联报表文件与源代码;
4)merge:
java emma merge {-in 统计数据文件} [-out 合并后的数据文件] [common options]
-in:可重复参数项,用于选择要进行合并的数据文件;
-out:用于存储合并后的数据文件位置;
实例:
1)instr:
2)运行:
3)生成报表:
off-line模式下使用emma一般来说包含三个步骤:
1)插桩-使用instr对于class文件(或者包含class文件的文件夹或者文件结构)
2)运行测试;
3)合并覆盖率统计数据-使用merge合并测试期间生成的统计数据;
4)输出统计报告-使用report生成
下面就使用方式进行说明:
1)前提准备:
将emma.jar加入jdk安装目录下的jre/lib/ext目录或者将emma.jar加入classpath环境变量中;
使用java emma调用显示emma的使用方式表示emma加入classpath成功;
2)instr:
java emma instr {-ip(/-cp) 插桩路径} [-d 插桩后的class文件输出目录] [-out 元数据文件输出位置] [-merge boolean] [-m 插桩模式] [-ix 插桩过滤] [commom options]
-ip -cp:该选项可以重复多次,用于指示要进行插桩的class文件,可以使用-ip来指示单个class文件,使用-cp来指示文件夹或者文件结构(jar);
-d:该选项指示插桩后的class文件保存位置,如果给定的插桩模式是overwrite的话该选项被忽略;
-out:指示存储统计信息文件的位置(默认统计信息存储在当前文件夹中);
-merge(y[es]|n[o]):指示统计信息是否可以被合并至-out参数指定的输出位置;
-m(copy|overwrite|fullcopy):指示插桩后的文件输出模式,copy表示只有那些进行了插桩的文件输出至-d指示的文件夹,overwrite表示覆盖原始文件,fullcopy表示复制所有的class文件(不论是否插桩)去-d/classes文件夹,所有文件结构(jar)去-d/lib文件夹;
-ix:插桩过滤器,指示那些文件进行插桩,可以重复用以指定多个过滤器;
3)report:
java emma report {-in 统计数据文件} {-r 输出文件格式} [-sp 源文件位置] [common options]
-in:可重复的参数,指示产生报告的统计数据文件;
-r(txt|html|xml):产生的报表文件的格式;
-sp:源文件所在位置,用于关联报表文件与源代码;
4)merge:
java emma merge {-in 统计数据文件} [-out 合并后的数据文件] [common options]
-in:可重复参数项,用于选择要进行合并的数据文件;
-out:用于存储合并后的数据文件位置;
实例:
1)instr:
2)运行:
3)生成报表:
上一篇: 如何通过php 获取页面中的指定内容类
下一篇: Ansible-Playbook--剧本