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万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章