zoukankan      html  css  js  c++  java
  • Jacoco远程统计tomcat服务(Windows系统)的代码覆盖率

    Jacoco远程统计tomcat服务(Windows系统)的代码覆盖率

    2017-09-21

    目录

    1 Jacoco的安装和设置
      1.1 什么是Jacoco?
      1.2 Jacoco安装
      1.3 Tomcat配置
    2 在客户端进行功能测试或接口测试
    3 Ant安装与配置
      3.1 安装
      3.2 配置build.xml
    4 生成代码覆盖率报告
    5 查看结果

     通用技术 jacoco 代码覆盖率使用中遇到的一些坑

    开发在做单元测试时,通过开发工具的插件很容易得到测试代码覆盖率。当软件部署好之后,我们通过功能测试或接口测试,能否得到代码覆盖率?Jacoco可以通过JavaAgent技术监控Java程序的到代码覆盖率。

    此文介绍java Agent的'tcpserver' output方法,用此方法时,JavaAgent会监听服务器端设置(Tomcat配置)的TCP port,然后把收集到的信息(jacoco.exec)写入TCP connection。然后通过jacocoant在客户端把收集的信息(jacoco.exec)从TCP connection拉取到客户端,再根据收集到信息(jacoco.exec)和源代码生成覆盖率report。

    1 Jacoco的安装和设置


     返回

    1.1 什么是Jacoco?

    Jacoco是一个开源的Java代码覆盖率工具,Jacoco可以嵌入到Ant 、Maven中,并提供了EclEmma Eclipse插件,也可以使用JavaAgent技术监控Java程序。很多第三方的工具提供了对Jacoco的集成,如sonar、Jenkins等。

    1.2 Jacoco安装

    官网地址:http://www.eclemma.org/jacoco/ (这里下载了jacoco-0.7.4.201502262128.zip版本)

    下载后加压到目录:D:CodeCoveragejacoco

    1.3 Tomcat配置

    1 关闭Tomcat:双击安装目录下的 D: omcatinshutdown.bat (window是bat扩展名、Linux是sh扩展名)

    2 修改D: omcatincatalina.bat,在第一行添加如下脚本:

    set JAVA_OPTS=-javaagent:D:CodeCoveragejacocolibjacocoagent.jar=includes=*,output=tcpserver,address=172.31.1.32,port=6300,append=true

     JVM option 格式:-javaagent:[yourpath/]jacocoagent.jar=[option1]=[value1],[option2]=[value2]

    官方文档:http://www.eclemma.org/jacoco/trunk/doc/agent.html

    或者:启动的时候加上javaagent参数

    java -javaagent:/opt/quality/lib/jacocoagent.jar=includes=*,output=tcpserver,port=6300,address=*,append=true -jar /app/bin/start.jar

    3 启动Tomcat:双击安装目录下的 D: omcatinstartup.bat

    4 验证JAVA_OPTS是否有修改正确

    使用WMIC命令

    vmic 
    process where name="java.exe"

    若显示一下内容,表示修改成功
    java.exe  "D:Javajdk1.8.0_91injava.exe"  -javaagent:D:CodeCoveragejacocolibjacocoagent.jar=includes=*,output=tcpserver,address=172.31.1.32,port=6300,append=true

     

    图1 process WMIC

    2 在客户端进行功能测试或接口测试


     返回

    1 测试对象:SpringMVC HelloWorld实例开发及部署

    2 功能测试:输入url:http://localhost:8080/HelloSpringMVC/saveResult

    说明:在功能测试过程中javaagent会收集覆盖到的代码信息

    3 Ant安装与配置


     返回

    3.1 安装

    1 官方网址: http://ant.apache.org -> download -> binary distribute apache-ant-1.9.9-bin.zip

      解压到:D:CodeCoverageant

    2 验证安装是否成功

      在安装目录D:CodeCoverageantin下执行命令:ant -version

    3.2 配置build.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <project name="plate_id_sample_service" xmlns:jacoco="antlib:org.jacoco.ant">
        <taskdef uri="antlib:org.jacoco.ant" resource="org/jacoco/ant/antlib.xml">
            <classpath path="D:CodeCoveragejacocolibjacocoant.jar"/>
        </taskdef>
        
        <target name="dump">
            <!-- address和port和catalina.bat设置保持一致,destfile设置jacoco.exec保存地址 -->
            <jacoco:dump address="172.31.1.32" reset="true" port="6300" destfile="D:CodeCoveragejacocojacoco.exec"/>
        </target>
        
        <target name="report">
            <jacoco:report>                        
                <executiondata>
                    <file file="D:CodeCoveragejacocojacoco.exec"/>
                </executiondata>
                            
                <structure name="Example Project">
                    <!-- 可以按软件功能模块设置多个group,方便在report中查看 -->
                    <group name="SpringMVC">           
                        <classfiles>
                            <!--.class文件路径,可以放在客户端-->
                            <fileset dir="D:CodeCoverageprojectHelloSpringMVCclasses"/>
                        </classfiles>
                        <sourcefiles encoding="gbk">
                            <!--源代码路径,可以放在客户端-->
                            <fileset dir="D:CodeCoverageprojectHelloSpringMVCjava" />
                        </sourcefiles>
                    </group>
                </structure>
                         
                <!-- report文件保存地址 -->
                <html destdir="D:CodeCoveragejacoco
    eport"/>
                            
            </jacoco:report>
        </target>
    </project>
    View Code

    4 生成代码覆盖率报告


     返回

    在ant安装目录运行ant dump命令,把jacoco.exec拉取到build.xml设置的客户端路径

    在ant安装目录运行ant report命令,根据build.xml设置jacoco.exec、class和java文件地址生成report

    图2 ant命令

    5 查看结果


     返回

    若build.xml没有设置源代码java的地址,就看不到代码内容的覆盖情况,最细只能看到方法的覆盖率统计

    图3 覆盖率报表

  • 相关阅读:
    Flume案例:目录文件到HDFS
    Flume案例:本地文件到HDFS
    12c多租户架构下部署GoldenGate12c
    ogg_sqlserver_oracle_winerver2008
    ogg异构oracle-mysql
    搜索引擎 反向索引,为什么称之为反向索引?
    ORACLE 11G 之DATAGUARD搭建逻辑standby
    Java并发锁控制API详解
    Java中的锁分类与使用
    Spring Cloud入门(含案例介绍及源码)
  • 原文地址:https://www.cnblogs.com/Ming8006/p/7569231.html
Copyright © 2011-2022 走看看