Jacoco生成覆盖报告方法

2020-02-17  本文已影响0人  TinyThing

0x1 设置运行参数

-javaagent:/jacocoagent.jar=output=tcpserver,port=8081,address=127.0.0.1,append=true

其中/jacocoagent.jar是你的jacoco的路径;
后面的参数可以开启一个监听端口,通过这个端口和ip地址来获取当前正在运行项目的代码覆盖率exec文件(dump文件)。

0x2 获取dump文件

通过ant获取dump文件(也可以正常关闭项目,会自动在根目录生成dump文件)

<target name="dump">
  <jacoco:dump address="127.0.0.1" reset="false" destfile="${jacocoexecPath}" port="8081" append="true"/>
</target>

通过执行ant dump命令,可以生成dump文件到指定的路径${jacocoexecPath};
dump文件是exec结尾的一个二进制文件,通过dump文件我们可以生成jacoco报告。

0x3 单元测试生成dump文件

以idea为例,如图所示,在运行参数中加入-javaagent配置即可:


image.png

当单元测试运行完后,会在对应的文件夹下生成相应的dump文件。

0x4 合并dump文件,并生成报告

ant中配置任务:

   <target name="merge">
        <jacoco:merge destfile="${execPath}">
            <fileset dir="${execPath}" includes="*.exec" />
        </jacoco:merge>
    </target>

执行 ant merge命令,可以将指定文件夹${execPath}下的exec文件合并;

接下来配置生成报告任务,然后执行ant report来生成报告:

<target name="report">
  <!-- 报告路径 -->
  <delete dir="${reportfolderPath}" /> 
  <mkdir dir="${reportfolderPath}" />  

  <jacoco:report>
      <executiondata>
          <!-- dump文件路径 -->
          <file file="${execPath}" />
      </executiondata>

      <structure name="JaCoCo Report">
          <group name="scs-web">     
              <classfiles>
                  <!-- 覆盖率相关类路径,可以配置过滤规则 -->
                  <fileset dir="${webClasspath}" >
                    <include name="com/run/**/*.class"/>
                    <exclude name="com/test/**/*.class"/>
                  </fileset>
              </classfiles>
                <sourcefiles encoding="UTF-8">
                  <fileset dir="${webSrcpath}" />
              </sourcefiles>
          </group>
      </structure> 

      <html destdir="${reportfolderPath}" encoding="UTF-8" />         
  </jacoco:report>
</target>
上一篇下一篇

猜你喜欢

热点阅读