JaCoCo + Resin + Ant + Jenkins統計代碼覆蓋率

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文件目錄,否則在覆蓋率報告中無法跳轉到源代碼):

發佈了41 篇原創文章 · 獲贊 8 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章