Jacoco代码覆盖率统计(ant)

这篇相当于是对前面一篇的补充,记录一下在普通环境下进行java代码覆盖率统计的方法。

准备
  1. Java环境

  2. apache-ant

  3. 待测程序

  4. jacoco agent

修改build.xml文件

修改apache-ant-xxx/bin目录下的build.xml文件:

<?xml version="1.0" ?>
<project name="testCodeCoveage"  basedir="/home/jxsw/apache-ant-1.10.1/bin/report" xmlns:jacoco="antlib:org.jacoco.ant" xmlns:sonar="antlib:org.sonar.ant" default="all">
  <!--Jacoco的安装路径-->
  <property name="jacocoantPath" value="/home/jxsw/jacoco-0.7.9/lib/jacocoant.jar"/>
  <!--最终生成.exec文件的路径,Jacoco就是根据这个文件生成最终的报告的-->
  <property name="jacocoexecPath" value="/home/jxsw/jacoco_file/jacoco.exec"/>
    <!--生成覆盖率报告的路径-->
  <property name="reportfolderPath" value="${basedir}/report/"/>
  <!--远程服务的ip地址,如有多个,可设置多个,name需修改-->
  <property name="server_ip" value="10.10.30.66"/>

  <!--待测程序.class文件路径-->
  <property name="waterommpClasspath" value="/home/jxsw2/ommp/water-ommp-release-0.0.1/lib/water-ommp-release-0.0.3/com/emrubik/water/ommp" />         
  
  <!--Jacoco所在目录-->
  <taskdef uri="antlib:org.jacoco.ant" resource="org/jacoco/ant/antlib.xml">
      <classpath path="${jacocoantPath}" />
  </taskdef>
  
  <!--merge task,当有多个待测程序时,生成报告前需将所有.exec文件merge成一个-->
  <target name="merge" depends="dump">
        <jacoco:merge destfile="jacoco.exec">
       <fileset dir="${basedir}" includes="*.exec"/>
        </jacoco:merge>
  </target>

  <!--dump任务:
      根据前面配置的ip地址,和端口号,访问目标服务,并生成.exec文件。-->

  <target name="dump">
        <!-- reset="true"是指在dump完成之后,重置jvm中的覆盖率数据为空。append="true"是指dump出来的exec文件为增量方式 -->
        <jacoco:dump address="${server_ip}" reset="false" destfile="${basedir}/waterommp.exec" port="15501" append="true"/>
  </target>


  <!--report任务:
      根据前面配置的源代码路径和.class文件路径,
      根据dump后,生成的.exec文件,生成最终的html覆盖率报告。-->
  <target name="report">
      <delete dir="${reportfolderPath}" />
      <mkdir dir="${reportfolderPath}" />

      <jacoco:report>
          <executiondata>
                 <file file="${basedir}/jacoco.exec" />

          </executiondata>

          <structure name="JaCoCo Report">

          <group name="waterommp related">
                  <classfiles>
                      <fileset dir="${waterommpClasspath}" >

                      </fileset>
                  </classfiles>
       <!--  exclude中为生成报告时排除的class   -->

<!--              <sourcefiles encoding="gbk">
                      <fileset dir="${mcmSrcpath}" >
                        <exclude name="**/north/control/iosconstans/*.java"/>
                      </fileset>
                  </sourcefiles>
-->
              </group>
          </structure>

          <html destdir="${reportfolderPath}/report" encoding="utf-8" />
          <csv destfile="${reportfolderPath}/report.csv"   />
          <xml destfile="${reportfolderPath}/report.xml" />

      </jacoco:report>
  </target>
  <target name="all" />

</project>

修改程序的启动脚本
  • tomcat

    CATALINA_OPTS="-javaagent:/home/jxsw/jacoco-0.7.9/lib/jacocoagent.jar=includes=*,output=tcpserver,port=15501,address=10.10.30.66,append=true"
    

    port即为ant.xml中dump时需要配置的监听端口

  • 其他

    启动脚本中添加:

    -javaagent:/home/jxsw/jacoco-0.7.9/lib/jacocoagent.jar=destfile=/home/jxsw/jacoco_file/waterommp.exec,output=tcpserver,port=15502,address=10.10.30.66
    
开始

重启待测程序,执行一系列操作之后在apache-ant-xxx/bin目录下执行ant dumpant mergeant report命令,如下图:

1.jpg
2.jpg
3.jpg

build.xml中配置的reportfolderPath中即可见生成的报告啦,用ftp拖到本地就可以看啦ovo

4.jpg
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、代码覆盖率 通常我们在做单元测试的时候会接触到代码覆盖率的概念,通过在单元测试的过程中收集代码覆盖率去判断测试...
    _夏兮阅读 11,412评论 3 12
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,179评论 19 139
  • 在测试的世界里,覆盖包含代码级覆盖、流程分支级覆盖、业务场景级覆盖等,覆盖是衡量测试完整性的重要指标,我们只有覆...
    yongliu1229阅读 8,472评论 0 4
  • Java Jacoco Ant Maven 针对 Jacoco[http://www.eclemma.org/ja...
    纳爱斯阅读 53,967评论 64 52
  • ANT build.xml文件详解(一) Ant的概念 可能有些读者并不连接什么是Ant以及入可使用它,但只要使用...
    SkTj阅读 9,512评论 0 2

友情链接更多精彩内容