java测试覆盖率工具_【腾讯TMQ】JAVA代码覆盖率工具JaCoCo-原理篇(下)

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 15:52   3437   0

三、JaCoCo使用方式

使用方式有很多,这里贴出了相应的参考链接,根据项目的不同可以灵活供有需要的读者去学习。

3.1 Apache Ant方式

参见 http://eclemma.org/jacoco/trunk/doc/ant.html

主要有以下几种,具体使用就不介绍了,应用宝是用的这种方式,后续有介绍。

Task coverage、Task agent、Task dump、Task merge、Task report、Task instrument

3.2 命令行方式

参见 http://www.eclemma.org/jacoco/trunk/doc/agent.html

使用方式说明:

format,png

主要放在JAVA_OPTS中,比如:

format,png

由AgentOptions的getVMArgument方法加载,各参数入AgentOptions的对应参数,为后续操作做为输入。

format,png

下面是官网的所有参数说明:

format,png

系统在jvm停止的时候会dump覆盖率信息。

关键的核心代码在这里,Agent.java在有一段代码

format,png

Runtime.getRuntime().addShutdownHook这个方法的意思就是在jvm中增加一个关闭的钩子,当jvm关闭的时候,会执行系统中已经设置的所有通过方法addShutdownHook添加的钩子,当系统执行完这些钩子后,jvm才会关闭。所以这些钩子可以在jvm关闭的时候进行内存清理、对象销毁等操作。

也就是在JVM关闭的时候调用agent.shutdown(),也就是写覆盖率数据。

format,png

3.3 Apache Maven方式

参见 http://www.eclemma.org/jacoco/trunk/doc/maven.html

这种方式适合Maven的项目。

下面简单说下调用方式原理:

就拿官方的Offline Example来说吧,其部分内容如下:

format,png

注意蓝色的部分,上面的配置主要做了以下几个事情:

(1) 项目已jar包方式打包,引入junit和jacoco。

(2) Build时执行instrument、report、check。

(3) 覆盖率生成到target/jacoco.exec

我们看看他是怎么触发调用的。

在jacoco源码中:jacoco-maven-plugin\target\classes\META-INF\maven\org.jacoco\jacoco-maven-plugin目录下有个plugin-help.xml文件,它里面标明了具体的调用方式。

截出instrument这段,关键地方就是下面蓝色部分。

format,png

官网上关于参数的说明:

format,png

给出一个整理后的表格:

format,png

再给一个jacoco的maven部分的代码目录:

format,png

到这里,大家应该清楚其调用的方式了吧。

3.4 Eclipse EclDmma Plugin方式

具体步骤如下:

(1) 在Eclipse菜单中选择Help → Install New Software…

(2) 在安装弹框中输入http://update.eclemma.org/,勾选出现的版本。

format,png

(3) 核对版本,点击Next。

(4) 根据向导完成安装。

(5) 使用就不说了。

3.5 与Jekins集成

(1) 先要在jenkins上安装JaCoCo的插件,安装完成之后在job的配置项中可以增加这个选项(如图1-2):

format,png

图1-2

(2) 选择后出现(图1-3):

format,png

图1-3

第一个录入框是你的覆盖率文件(exec),第二个是class文件目录,第三个是源代码文件目录。

(3) 配置好了之后进行构建,构建完成之后job首页就会出现覆盖率的趋势图(图1-4),鼠标点击趋势图可以看到覆盖率详情(图1-5) ,包括具体覆盖率数据和源码的覆盖率情况:

format,png

图1-4 趋势图

format,png

图1-5 覆盖率详情

版权声明:本文为博主原创文章,未经博主允许不得转载。

TMQ(腾讯移动品质中心)是腾讯最早专注在移动APP测试的团队我们专注于移动测试技术精华,饱含腾讯多款亿级APP的品质秘密,文章皆独家原创,我们不谈虚的,只谈干货!

扫码关注我们

PFUAdCp.png

扫一扫 关注TMQ精彩分享不断

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP