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
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,402评论 6 499
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,377评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,483评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,165评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,176评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,146评论 1 297
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,032评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,896评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,311评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,536评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,696评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,413评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,008评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,659评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,815评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,698评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,592评论 2 353

推荐阅读更多精彩内容

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