jacoco統計自動化測試代碼覆蓋率


一.下載jacoco, ant工具

jacoco: http://www.eclemma.org/jacoco/;

ant: http://ant.apache.org 並添加到環境變量;

二.不停jvm, dump出覆蓋率數據

在部署的tomcat服務中,/bin/catalina.sh中JAVA_OPTS參數值添加:

-javaagent:/data1/jacoco/lib/jacocoagent.jar=includes=*,output=tcpser
ver,port=2014,address=10.210.230.26

其中:/data1/jacoco/lib/jacocoagent.jar為安裝jacoco的jacocoagent.jar包絕對路徑;output覆蓋率數據輸出的形式,有file, tcpserver, tcpclient, 默認是file,file是在jvm停掉時才將覆蓋率數據dump出來;address和port可以提供client訪問,並dump出覆蓋率數據文件, 在build.xml會使用。

啟動tomcat服務,sh /bin/startup.sh;  假設tomcat服務為10.210.230.26:8074

三.使用自動化測試跑該tomcat服務

四.ant的build.xml

 

[html]  view plain  copy
 
  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2.   
  3.   
  4. <project name="testCodeCoveage" xmlns:jacoco="antlib:org.jacoco.ant" default="report">  
  5.   
  6.         <property name="result.dir" location="/data1/hugang/tomcat/apache-tomcat-8.0.36/webapps/ROOT/WEB-INF" />  
  7.         <property name="result.classes.dir" location="${result.dir}/classes" />  
  8.         <property name="result.report.dir" location="/data1/hugang/jacocoresult/" />  
  9.         <property name="result.exec.file" location="./remote.exec" />  
  10.         <property name="resource.code" location="/data1/hugang/jacoco/sourcecode/apiservice-java-strategyapi/src/main/java/" />  
  11.   
  12.   
  13.   
  14.         <!-- Import JaCoCo Ant tasks, taskdef第三方target -->  
  15.         <taskdef uri="antlib:org.jacoco.ant" resource="org/jacoco/ant/antlib.xml">  
  16.                 <classpath path="/data1/hugang/jacoco/lib/jacocoant.jar" />  
  17.         </taskdef>  
  18.   
  19.   
  20. <!--tomcat下bin/catalina.sh在JAVA_OPTS參數新加的   
  21. -javaagent:/data1/jacoco/lib/jacocoagent.jar=includes=*,output=tcpser  
  22. ver,port=2014,address=10.210.230.26會在這個端口上提供client訪問,並能dump出此時的覆蓋率數據文件:destfile-->  
  23.     <target name="dump">  
  24.         <jacoco:dump address="10.210.230.26" reset="false" destfile="${result.exec.file}" port="2014" append="false"/>  
  25.     </target>  
  26.   
  27.     <target name="report" depends="dump">  
  28.   
  29.                 <!-- Create coverage report -->  
  30.                 <jacoco:report>  
  31.                         <!-- This task needs the collected execution data and ... -->  
  32.                         <executiondata>  
  33.                                 <file file="${result.exec.file}" />  
  34.                         </executiondata>  
  35.   
  36.                         <!-- the class files and optional source files ... -->  
  37.                         <structure name="apiservice-java-strategyapi">  
  38.                              <group name="strategy">  
  39.                                  <classfiles>  
  40.                                          <fileset dir="${result.classes.dir}"/>  
  41.                                          <!-- 可以指定jar包 -->  
  42.                                          <!--  include name="*.jar"  -->  
  43.                                  </classfiles>  
  44.                                  <sourcefiles encoding="UTF-8">  
  45.                                     <fileset dir="${resource.code}"/>  
  46.                                     </sourcefiles>  
  47.                              </group>  
  48.                         </structure>  
  49.                 <!-- to produce reports in different formats. -->  
  50.                         <html destdir="${result.report.dir}" />  
  51.                 </jacoco:report>  
  52.    </target>  
  53. </project>  

 

 

執行: ant -v

 

最后在 destdir路徑下 /data1/hugang/jacocoresult/

生成html報告

 

五.展示報告

將報告文件,放到apache服務器下,直接訪問html,如下:




參考:http://www.eclemma.org/jacoco/trunk/doc/ant.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM