您的位置 首页 java

jacoco+ant搭建本地java代码覆盖率计算环境

JaCoCo是一个开源的覆盖率工具,它针对的开发语言是 java ,其使用方法很灵活,可以嵌入到Ant、 Maven 中;可以作为 Eclipse IDEA 插件,可以使用其 Java Agent技术监控Java程序等等。很多第三方的工具提供了对JaCoCo的集成,如 Jenkins 等。

使用jacoco可以辅助用例补充,测试覆盖,减小代码出错风险,且加深代码熟悉。

jacoco+ant环境搭建步骤:

第一步:被测服务开启jacocoagent监听

下载jacoco:

复制jacoco到被测服务,目前服务基本都有jacoco,可以用复制,直接下载一份服务的jacoco到自己本地电脑即可。

复制 id_rsa.pub本地到远程authorized_keys下:

scp jacoco-0.8.7.zip root@IP地址 :/目录/

被测服务配置 JVM 参数:添加-javaagent:/soft/jacoco-0.8.7/lib/jacocoagent.jar=includes=*,output=tcpserver,port=6300,address=*

配置后查看jacocoagent监听端口是否开启:netstat -an|grep 6300

因为是搭建本地环境,本地电脑也下载一份jacoco

第二步:本地安装ant

ant下载安装

buil文件(ant的bin目录下)配置:配置前准备:测试服务的 class文件 、源文件、jacoco文件

build.xml文件内容如下,根据自己需要修改文件目录:

<?xml version= “1.0” encoding= “UTF-8” ?>

<project name= “test” xmlns:jacoco= “antlib:org.jacoco.ant” >

<!–Jacoco的安装路径–>

<property name= “jacocoantPath” value= “/soft/jacoco-0.8.7/lib/jacocoant.jar” />

<!–最终生成.exec文件的路径,Jacoco就是根据这个文件生成最终的报告的–>

<property name= “jacocoexecPath” value= “D:\soft\jacoco-0.8.7\target\jacoco.exec” />

<!–生成覆盖率报告的路径–>

<property name= “reportfolderPath” value= “D:\soft\jacoco-0.8.7\report” />

<!–远程 tomcat 服务的ip地址–>

<property name= “server_ip” value= “11.91.185.215” />

<!–前面配置的远程tomcat服务打开的端口,要跟上面配置的一样–>

<property name= “server_port” value= “6300” />

<!– 源代码 路径可以包含多个源代码–>

<property name= “webSrcpath” value= “D:\code\ywl-master\ywl-basic\ywl-basic-service\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:\code\ywl-master\ywl-basic\ywl-basic-service\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= “ywl-master” >

<!–此处配置classes文件地址 –>

<classfiles>

<fileset dir= “${webClasspath}” />

</classfiles>

<!–此处配置源码地址–>

<sourcefiles encoding= “utf-8” >

<fileset dir= “${webSrcpath}” />

</sourcefiles>

</group>

<group name= “ywl-service” >

<!–此处配置classes文件地址 –>

<classfiles>

<fileset dir= “${webClasspath2}” />

</classfiles>

<!–此处配置源码地址–>

<sourcefiles encoding= “utf-8” >

<fileset dir= “${webSrcpath2}” />

</sourcefiles>

</group>

</structure>

<html destdir= “${reportfolderPath}” encoding= “UTF-8” />

</jacoco:report>

</target>

</project>

第三步: ant命令获取覆盖率报告

先cmd 到 apache -ant-1.10.12的bin目录下,再执行下面的命令:

ant dump命令:获取覆盖率exec文件

ant report命令:生成覆盖率报告

第四步:查看覆盖率报告

找到自己在build.xml配置的路径查看覆盖率报告即可

遇到的问题:

  • 如果报告的代码找不到,可能是源文件配置错误,需要重新配置一下(配置到java文件)
  • 报告乱码build文件<sourcefiles encoding=”utf-8″>
  • 多个jar包,配置build中多个group

文章来源:智云一二三科技

文章标题:jacoco+ant搭建本地java代码覆盖率计算环境

文章地址:https://www.zhihuclub.com/184992.shtml

关于作者: 智云科技

热门文章

网站地图