这篇文章主要介绍“在docker中使用jacoco的方法”,在日常操作中,相信很多人在在docker中使用jacoco的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”在docker中使用jacoco的方法”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
jacoco一款主流的统计代码测试覆盖率的工具,最近研究了下在docker下的用法。
jacoco官网(https://www.jacoco.org),建议大家先看一下官网说明,看完基本就明白怎么用了。我是基于docker和jacoco的0.8.6版本进行搭建的。不基于docker的场景,使用更简单,不单独说明了。
1. 把文件打进docker镜像
既然用docker,就要把jacocoagent.jar打进镜像,比如我的jacocoagent.jar文件在镜像的/app/jacoco/jacocoagent.jar目录下
2. 增加JVM启动参数
从jacoco官网(https://www.jacoco.org/jacoco/trunk/doc/agent.html)上,可以看到获取测试覆盖率文件分为三种方式,分别是:
. 输出文件,只有当JVM结束时才能生成本地文件
. TCP Socket Server 模式, 通过socket端口连接获取到测试覆盖率数据
. TCP Socket Client 模式, Jacoco agent会连接到指定的TCP端,请求时执行数据写到socket
我采用的 TCP Socket Server模式。需要在JVM启动时,增加参数:
-javaagent:/app/jacoco/jacocoagent.jar=output=tcpserver,address=0.0.0.0,port=7500
注意:因为是基于docker,所以address需要写0.0.0.0。 port随意。
注意在镜像发布后,找到该应用的虚拟地址(不是node机器地址),比如我的发布后是10.2.8.161
3. ANT
在客户端机器上,安装ant,配置build.xml。示例如下,注意替换你的ant安装地址,并把jacocoant.jar复制到对应目录下:
<?xml version="1.0" encoding="UTF-8"?>
<project name="Jacoco" xmlns:jacoco="antlib:org.jacoco.ant" default="jacoco">
<property name="jacocoantPath" value="/usr/local/ant/jacocoant.jar"/>
<property name="integrationJacocoexecPath" value="./jacoco.exec"/>
<property name="ip" value=""/>
<taskdef uri="antlib:org.jacoco.ant" resource="org/jacoco/ant/antlib.xml">
<classpath path="${jacocoantPath}" />
</taskdef>
<target name="dump">
<jacoco:dump address="${ip}" port="7500" reset="false" destfile="${integrationJacocoexecPath}" append="true"/>
</target>
</project>
执行命令:ant dump -Dip=10.2.8.161
即可把测试覆盖率文件jacoco.exec下载下来。
4. 生成HTML
在应用的POM里面增加:
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.6</version>
<configuration>
<destFile>jacoco.exec</destFile>
<dataFile>jacoco.exec</dataFile>
</configuration>
<executions>
<execution>
<id>jacoco-initialize</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>jacoco-site</id>
<phase>test</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
把下载的jacoco.exec放到pom平级目录下。
执行report命令
然后在target目录下会有sit子目录,即为生成的HTML文件,用浏览器打开即可。
到此,关于“在docker中使用jacoco的方法”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://my.oschina.net/u/1388850/blog/5054958