Jacoco生成java覆蓋率報告的兩種方式

shutdown jvm時dump出覆蓋率數(shù)據(jù)
1.下載jacoco:http://www.eclemma.org/jacoco/
2.對于tomcat,在catalina.sh的JAVA_OPTS配置中增加:
-javaagent:/home/work/local/jacoco/lib/jacocoagent.jar=includes=com.xxx.*
其中 includes:表示針對指定的class進(jìn)行覆蓋率數(shù)據(jù)收集,其他參數(shù): append=true/false:每一次收集的覆蓋率數(shù)據(jù)是追加還是替換,不設(shè)置默認(rèn)為true destfile=jacoco.exec:dump出來的覆蓋率數(shù)據(jù)文件output=file/tcpserver/tcpclient:覆蓋率數(shù)據(jù)輸出的形式,分別為file,tcpserver和tcpclient,file是比較簡單的方式,tcp的方式可支持自行開發(fā)獲取覆蓋率數(shù)據(jù)的工具。不設(shè)置默認(rèn)是file。
3.注意采用output=file的方式下,是在jvm停掉時將覆蓋率數(shù)據(jù)dump出來到文件,在shutdown tomcat后不能kill -9 java,只殺掉tomcat進(jìn)程,否則數(shù)據(jù)收集無效

4.生成覆蓋率數(shù)據(jù)需要ant執(zhí)行,build.xml實(shí)例如下:指定第3步dump出的exec文件之后,執(zhí)行antjacoco,就會在指定路徑輸出html格式覆蓋率報告

<?xml version="1.0" ?>
      <project name="testExec" xmlns:jacoco="antlib:org.jacoco.ant" default="    jacoco">
      <property name="srcPath" value="src/main/java"/>
      <property name="classPath" value="target/classes"/>
      <property name="jacocoantPath" value=""/>
      <property name="jacocoexecPath" value="./merged.exec"/>
      <property name="workspacePath" value="."/>
      <property name="reportfolderPath" value="./report"/>
      <property name="server_ip" value=""/>
      <property name="server_port" value=""/>
    
      <taskdef uri="antlib:org.jacoco.ant" resource="org/jacoco/ant/    antlib.xml">
        <classpath path="${jacocoantPath}" />
      </taskdef>
    
    
      <target name="merge">
        <jacoco:merge destfile="merged.exec">
          <fileset dir="${workspacePath}" includes="**/*.exec"/>
        </jacoco:merge>
      </target>
    
    
      <target name="dump">
        <jacoco:dump address="${server_ip}" reset="false" destfile="    ${jacocoexecPath}" port="${server_port}" append="true"/>
      </target>
    
      <target name="jacoco">
        <delete dir="${reportfolderPath}" />
        <mkdir dir="${reportfolderPath}" />
    
        <jacoco:report>
          <executiondata>
            <file file="${jacocoexecPath}" />
          </executiondata>
    
          <structure name="JaCoCo Report">
          <group name="ad">
            <classfiles>
              <fileset dir="${classPath}" />
            </classfiles>
            <sourcefiles encoding="gbk">
              <fileset dir="${srcPath}" />
            </sourcefiles>
          </group>
          </structure>
          <html destdir="${reportfolderPath}" encoding="utf-8" />
        </jacoco:report>
      </target>
    </project>

不停jvm dump出覆蓋率數(shù)據(jù)
在配置JAVA_OPTS的參數(shù)時,修改如下:

-javaagent:/home/work/local/jacoco/jacocoagent.jar=includes=com.xx.*,output=tcpserver,port=10001,address=100.100.100.100

這樣的方式下啟動tomcat之后,jacoco會在一個端口上提供client訪問,并能dump出此時的覆蓋率數(shù)據(jù)文件,dump的方式仍然是ant執(zhí)行,build.xml中有這樣一段:

<target name="dump">
<jacoco:dumpaddress="${server_ip}" reset="false"destfile="${jacocoexecPath}" port="${server_port}"append="true"/>
</target>

需要配置server的ip和端口,執(zhí)行ant dump,輸出的還是exec文件,再執(zhí)行ant jacoco會生成html報告

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,602評論 19 139
  • Java Jacoco Ant Maven 針對 Jacoco[http://www.eclemma.org/ja...
    納愛斯閱讀 54,086評論 64 52
  • =========================================================...
    lavor閱讀 3,649評論 0 5
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,275評論 6 342
  • NAME dnsmasq - A lightweight DHCP and caching DNS server....
    ximitc閱讀 2,995評論 0 0

友情鏈接更多精彩內(nèi)容