jacoco生成覆盖率报告

操作步骤:

1、下载git上最新的代码到本地

  git clone  {代码地址}

2、在服务器上打出相关服务的jar包

  1) 登上服务器,切换到目标服务所在路径:

   cd /xx/xx/xx/xx

  2)maven打包:

   mvn clean package

  3)  打包成功后,当前服务目录下ls查看会有一个target文件夹;

  4)cd切换到target目录下,有一个目标服务相关的jar包已经打好;

3、agent模式

  1)本地下载jacoco安装包,下载地址:https://www.eclemma.org/jacoco/

  2)从jacoco包的lib文件夹中拿到jacocoagent.jar包,上传到测试服务器(xshell上传测试服务器命令:rz);

  3)   用agent方式启动服务(服务器上运行):

  ***   在目标服务jar包的目录下运行下面命令:

  java -javaagent:{jacocoagent.jar在服务器上的地址}=dumponexit=true,destfile={report1.exec文件在服务器上存放的地址} -jar {xxxx(目标服务打出的jar包).jar}

  4)服务启动后,执行测试用例,所有的用例执行完成后,停止服务,停止后在对应的目录可获得exec文件;

    停服务命令:

    ps -aux | grep  {jar包名.jar}

    kill -9   {进程号}

4、exec文件

  1)从服务器上下载exec文件到本地(xshell从服务器下载文件到本地:sz  文件名)

  2)用IDEA打开git上下载下来的源码;

  3)  点击IDEA中Analyze中的Show Code Coverage Data,打开.exec文件,可以看到coverage结果;

5、生成报告

  1)本地安装ant (http://ant.apache.org/),配置环境变量;

  2)本地新建build.xml文件;

  3)修改xml文件中的一些路径信息;

【build.xml】  

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <project name="Jacoco" xmlns:jacoco="antlib:org.jacoco.ant" default="jacoco">
 3 <!--Jacoco 的安装路径-->
 4 <property name="jacocoantPath" value="{xxxxxxxxxx}"/>
 5 <!--最终生成 .exec 文件的路径,Jacoco 就是根据这个文件生成最终的报告的-->
 6 <property name="jacocoexecPath" value="{xxxxxxxxxxx}"/>
 7 <!--生成覆盖率报告的路径-->
 8 <property name="reportfolderPath" value="{xxxxxxxxxxxxxx}"/>
 9 <!--源代码路径-->
10 <property name="checkOrderSrcPath" value="{xxxxxxxxxxxxxxxxx}" />
11 <!--.class 文件路径-->
12 <property name="checkOrderClasspath" value="{xxxxxxx	argetclasses}" />
13 
14 <!--让 ant 知道去哪儿找 Jacoco-->
15 <taskdef uri="antlib:org.jacoco.ant" resource="org/jacoco/ant/antlib.xml">
16 <classpath path="${jacocoantPath}" />
17 </taskdef>
18 
19 <!--jacoco 任务:
20 根据前面配置的源代码路径和 .class 文件路径,
21 根据 dump 后,生成的 .exec 文件,生成最终的 html 覆盖率报告。-->
22 <target name="report">
23 <delete dir="${reportfolderPath}" />
24 <mkdir dir="${reportfolderPath}" />
25 
26 <jacoco:report>
27 <executiondata>
28 <file file="${jacocoexecPath}" />
29 </executiondata>
30 
31 <structure name="JaCoCo Report">
32 <group name="Check Order related"> 
33 <classfiles>
34 <fileset dir="${checkOrderClasspath}">
35 <!-- 过滤不必要的文件 -->
36 <exclude name="**/R.class"/>
37 <exclude name="**/R$*.class"/>
38 <exclude name="**/*$ViewInjector*.*"/>
39 <exclude name="**/BuildConfig.*"/>
40 <exclude name="**/Manifest*.*"/>
41 </fileset>
42 </classfiles>
43 <sourcefiles encoding="UTF-8">
44 <fileset dir="${checkOrderSrcPath}" />
45 </sourcefiles>
46 </group>
47 </structure>
48 <html destdir="${reportfolderPath}" encoding="UTF-8" />
49 <csv destfile="${reportfolderPath}/coverage-report.csv" encoding="UTF-8"/>
50 <xml destfile="${reportfolderPath}/coverage-report.xml" encoding="UTF-8"/> 
51 </jacoco:report>
52 </target>
53 </project>
View Code

  4) dos命令切换到build.xml文件所在的地址,执行:

    ant report -buildfile build.xml

  5) 生成的报告在xml文件配置的报告路径中:

操作中遇到的问题和解决方法:

1. 装好ant并且已经配置好环境变量,dos命令切换到ant安装路径,输入ant

 提示:Unable to locate tools.jar. Expected to find it in C:Program FilesJavajre6lib”

——解决方法:

将jdk中的lib下的toos.jar文件拷贝到 C:Program FilesJavajre6lib下;

原文地址:https://www.cnblogs.com/hd-test/p/11168766.html