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\target\classes}" /> 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>
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 Files\Java\jre6\lib”
——解决方法:
将jdk中的lib下的toos.jar文件拷贝到 C:\Program Files\Java\jre6\lib下;