JaCoCo資源:
官方網站:https://www.jacoco.org
配置Resin:
#修改cluster-default.xml文件,在<server-default>標籤內,<jvm-mode>標籤下添加:
<jvm-arg>-javaagent:/usr/local/resin/resin-4.0.63/lib/jacocoagent.jar=includes=com.fintech.credit.web.*,output=tcpserver,address=10.236.150.216,port=6300</jvm-arg>
#建議將jacocoagent.jar放置在resin的lib目錄下
#includes:指定統計哪些類的代碼覆蓋率
#output:選擇tcpserver,可以在不停止應用服務的情況下生成exec文件
#address:本機IP,供ant dump使用
#port:端口號,供ant dump使用
#驗證是否生效:ps -ef | grep resin
生成exec文件-手動:
java -jar jacococli.jar dump --address 10.236.150.216 --port 6300 --destfile ./jacoco.exec
#注意jacococli.jar的路徑
生成exec文件、生成覆蓋率報告-Ant:
創建build.xm文件:
<?xml version="1.0" encoding="UTF-8" ?>
<project name="Ant Build with JaCoCo" default="auto" xmlns:jacoco="antlib:org.jacoco.ant">
<!-- jacocoant.jar的路徑 -->
<property name="jacocoant.file" value="/usr/local/jacoco/jacoco-0.8.6/lib/jacocoant.jar"/>
<!-- 設置Java Agent時配置的address -->
<property name="javaagent.address" value="10.236.150.216"/>
<!-- 設置Java Agent時配置的port -->
<property name="javaagent.port" value="6300"/>
<!-- 生成exec文件的路徑 -->
<property name="exec.file" value="/var/lib/jenkins/workspace/credit-core-test/jacoco.exec"/>
<!-- 生成覆蓋率報告的路徑 -->
<property name="report.dir" value="/var/lib/jenkins/workspace/credit-core-test/report/"/>
<!-- 源代碼路徑 -->
<property name="source.dir" value="/var/lib/jenkins/workspace/credit-core/credit-web/src/main/java/com/fintech/credit/web/" />
<!-- class路徑 -->
<property name="class.dir" value="/usr/local/resin/resin-4.0.63/webapps/credit-web/WEB-INF/classes/com/fintech/credit/web/" />
<!-- Import JaCoCo Ant tasks -->
<taskdef uri="antlib:org.jacoco.ant" resource="org/jacoco/ant/antlib.xml">
<classpath path="${jacocoant.file}" />
</taskdef>
<!-- dump任務:生成exec文件 -->
<target name="dump">
<jacoco:dump address="${javaagent.address}" port="${javaagent.port}" reset="true" destfile="${exec.file}"/>
</target>
<!-- jacoco任務:生成覆蓋率報告 -->
<target name="report">
<jacoco:report>
<executiondata>
<file file="${exec.file}"/>
</executiondata>
<structure name="Example Project">
<group name="credit-web">
<classfiles>
<fileset dir="${class.dir}"/>
</classfiles>
<sourcefiles encoding="UTF-8">
<fileset dir="${source.dir}"/>
</sourcefiles>
</group>
</structure>
<html destdir="${report.dir}" encoding="UTF-8"/>
</jacoco:report>
</target>
<target name="auto" depends="dump, report" />
</project>
配置Ant環境變量,依次執行(先生成exec文件,然後生成覆蓋率報告):
ant dump
ant report
生成exec文件、生成覆蓋率報告-Jenkins:
首先安裝JaCoCo插件,然後在Global Tool Configuration配置Ant:
生成exec文件:
將待測項目(credit-core)的源代碼和類文件複製到測試項目(credit-core-test)下(在credit-core-test目錄下新建jacoco文件夾,然後在jacoco目錄下新建target文件夾和src文件夾,最後在src目錄下新建main文件夾):
生成覆蓋率報告(注意源文件和class文件目錄,否則在覆蓋率報告中無法跳轉到源代碼):