代码覆盖率工具---Emma

基于tomcat | emma的代码覆盖率检查工具


  1. EMMA 介绍

    EMMA 是一个开源、面向 Java 程序测试覆盖率收集和报告工具。它通过对编译后的 Java 字节码文件进行插装,在测试执行过程中收集覆盖率信息,并通过支持多种报表格式对覆盖率结果进行展示。

    EMMA可以统计几种覆盖率:class,method,block, line。支持版本迭代的覆盖率统计

  2. EMMA 使用

    EMMA基本是四步曲:

    插桩(instr),运行,收集(ctl),报告(report)。

  3. Emma的下载

    Emma-2.1.5320.jar

  4. 环境搭建

    Step1、部署emma的jra

    上传emma-2.1.5320.jar文件到系统java环境下:

    a. 在linux下查看java在哪里:$JAVA_HOME$

    b.进入java目录下的jre/lib/ext/

    c.把emma的jar包放上去 :

    rz 选择emma-2.1.5320.jar

    Step2、给jar包赋777权限

    chmod -R 777 emma-2.1.5320.jar

    Step3、进入tomcat 的bin 目录,修改catalina.sh

    1). cp catalina.sh catalina_bak.sh

    2). vim catalina.sh

    3). 修改JAVA_OPTS值( 红色字体的为添加的内容):

    -Xbootclasspath/p:/***/***/***/java/jre/lib/ext/emma-2.1.5320.jar -XX:-UseSplitVerifier -Demma.rt.control.port=39123

    Step4、杀掉tomcat进程

    kill -9 线程号


  1. 插桩

    java emma instr -m overwrite -ip /要插桩的jar包绝对地址  -Dmetadata.out.file=/存放地址/文件名.em 

    command:

    java emma instr -cp /usr/local//anrs/lib/anrs.jar -m overwrite -ix +com.* -Dmetadata.out.file=test.em

    参数介绍:

    -cp,指定插桩的路径,多个jar包可以用,分割

    -m:输出模式

    overwrite:重新jar包,anrs.jar

    default:copy, 需要加上-d参数,指定输出路径。有插桩,才cp一份class到指定路径

    fullcopy:需要加上-d参数,指定输出路径。 不管有没有插桩,都cp一份class到指定路径

    -merge:合并。

    default:yes。 如果metadata指定输出的文件一样,将两次插桩信息进行合并

    no。不合并两次插桩信息

    -ix:指定需要插桩的class

    +com.*: + 指包含

    -com.*:-指排除

    支持多个+和-,用逗号分隔

  2. 启动tomcat并查看日志,

    ./tomcat/bin/startup.sh;tail -f ../logs/catalina.out

    启动日志
    备注:

    一般情况下,直接运行应用程序即可。EMMA会启动一个监听端口,用来后面收集信息(ctl)。这个端口是固定的,47653。

    如果我们的应用是多进程的或者虚拟机发布应用的情况,就会出现启动失败。

    其实EMMA也提供了一个命令,进行端口设置:-Demma.rt.control.port=39123

    还有host指定,-Demma.rt.control.host=你想指定的Ip地址. default is localhost

    这个参数需要加在程序启动命令里

  3. 执行测试

    执行:功能测试 | 自动化测试 |等其他测试

  4. 数据收集

    一般有两种收集信息方法:

    1. 程序退出,自动收集,在当前运行目录下生成coverage.ec

    2. 命令行:

      java emma ctl -connect localhost:47653 -command coverage.get,/存放收集数据的绝对路径/文件名.ec

    合并.ec文件

    1. 自动合并。如果生成的.ec文件名字相同,自动合并。

    2. 命令行合并:

      java emma merge -input SM1.ec, SM2.ec -outfile SM.ec

    清除执行统计信息

    1. 重启应用

    2. 命令行:reset

    java emma ctl -connect localhost:47653 -command coverage.reset

  5. 报告

    转换成html格式查看

    java -cp emma.jar emma report -r html -in -Dreport.html.out.file=D:\apache-tomcat-8.0.14\webapps\tcmt.html

    java -cp emma.jar emma report -r html -in /存放地址/文件名.em,/存放收集数据的绝对路径/文件名.ec -Dreport.html.out.file=/存放地址/文件名.html
    Emma-report

猜你喜欢

转载自blog.csdn.net/Spark2008/article/details/51443708