某天闲的没事干想测测项目覆盖率,于是开始了搞事之路
因为之前有在广发用过jacoco,所以就想着在本地也搞个jacoco监测部署下玩玩,什么?你说jacoco有什么优缺点?不好意思,不知道,玩就对了,玩完在探究,那么废话不多说开始搞事…
首先是要准备好环境
我这里是Windows10 jdk1.8
那么首先你需要jacoco,下载链接 https://www.eclemma.org/jacoco/
那么直接最新版本,我此时最新版本为0.8.10
然后呢需要一个ant ,有大佬出过,那么也是链接奉上:https://www.cnblogs.com/andy0816/p/14298865.html
先给ant加个配置吧
在我的ant路径下,新建build.xml文件
内容:
<?xml version="1.0" encoding="UTF-8"?>
<project name="test" xmlns:jacoco="antlib:org.jacoco.ant" >
<!--Jacoco的安装路径-->
<property name="jacocoantPath" value="D:\software\jacoco-0.8.10\lib\jacocoant.jar"/>
<!--最终生成.exec文件的路径,Jacoco就是根据这个文件生成最终的报告的-->
<property name="jacocoexecPath" value="D:\software\jacoco-0.8.10\target\jacoco.exec"/>
<!--生成覆盖率报告的路径-->
<property name="reportfolderPath" value="D:\report"/>
<!--远程tomcat服务的ip地址-->
<property name="server_ip" value="127.0.0.1"/>
<!--jacoco端口-->
<property name="server_port" value="6300"/>
<!--源代码路径可以包含多个源代码-->
<property name="webSrcpath" value="D:\workspace\bonade-saas-hrm-train-server\bonade-saas-hrm-train-core\src\main\java" />
<!--
<property name="webSrcpath" value="D:\code\ywl-service\ywl-basic\ywl-basic-service\src\main\java" />
-->
<!--.class文件路径可以包含多个-->
<property name="webClasspath" value="D:\workspace\bonade-saas-hrm-train-server\bonade-saas-hrm-train-core\target\classes\com" />
<!--
<property name="webClasspath" value="D:\code\ywl-service\ywl-basic\ywl-basic-service\target\classes\com" />
-->
<!--让ant知道去哪儿找Jacoco-->
<taskdef uri="antlib:org.jacoco.ant" resource="org/jacoco/ant/antlib.xml">
<classpath path="${jacocoantPath}" />
</taskdef>
<!--dump任务:
根据前面配置的ip地址,和端口号,
访问目标tomcat服务,并生成.exec文件。-->
<target name="dump">
<jacoco:dump address="${server_ip}" reset="false" destfile="${jacocoexecPath}" port="${server_port}" append="false"/>
</target>
<!--jacoco任务:
根据前面配置的源代码路径和.class文件路径,
根据dump后,生成的.exec文件,生成最终的html覆盖率报告。-->
<target name="report">
<delete dir="${reportfolderPath}" />
<mkdir dir="${reportfolderPath}" />
<jacoco:report>
<executiondata>
<file file="${jacocoexecPath}" />
</executiondata>
<structure name="JaCoCo Report">
<group name="gxg-server">
<!--此处配置classes文件地址 -->
<classfiles>
<fileset dir="${webClasspath}" />
</classfiles>
<!--此处配置源码地址-->
<sourcefiles encoding="utf-8">
<fileset dir="${webSrcpath}" />
</sourcefiles>
</group>
</structure>
<html destdir="${reportfolderPath}" encoding="UTF-8" />
</jacoco:report>
</target>
</project>
这个配置的内容我也是抄过来,网上都是大同小异
着重要说的是什么呢
这里被人误导了,还以为是服务的端口,并不是,所以我自己改了注释为jacoco端口,其他基本也不会有什么问题;
下一步,给服务加个启动项配置
-javaagent:D:\software\jacoco-0.8.10\lib\jacocoagent.jar=includes=com.*,
output=tcpserver,
address=127.0.0.1,
port=6300,append=true
加到
这里看到port嘛?是跟上图一样的,否则会链接拒绝,如下图
启动服务,随便postman调几个接口,不用关闭服务
执行命令
ant dump
ant report
之前build.xml里边是有写输出位置的,我这里直接去
如果你配了多个服务就会出现多个,比如我这里配了两个,但是buildxml里边我都已经删掉或者注释掉了,所以你要是不加的话就只会有一个服务
就是这里了,如上图,注意不要重名哦,不管是group的name还是fileset的配置;
基本就是这样啦…