三、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

使用方式说明:

主要放在JAVA_OPTS中,比如:

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

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

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

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

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

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

3.3 Apache Maven方式

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

这种方式适合Maven的项目。

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

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

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

(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这段,关键地方就是下面蓝色部分。

官网上关于参数的说明:

给出一个整理后的表格:

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

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

3.4 Eclipse EclDmma Plugin方式

具体步骤如下:

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

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

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

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

(5) 使用就不说了。

3.5 与Jekins集成

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

图1-2

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

图1-3

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

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

图1-4  趋势图

图1-5  覆盖率详情

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

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

扫码关注我们

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

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

  1. java测试性能代码_关于性能:Java代码内部的基准测试

    我最近一直在研究基准测试,我一直对记录程序数据等感兴趣.我想知道我们是否可以在程序中有效地实现自己的内存使用代码和实现自己的时间消耗代码.我知道如何检查代码运行所需的时间: public static ...

  2. java测试不成功_为什么我的Java布尔测试总是失败?

    我正在尝试进行布尔测试,以便如果其中一个胎压低于35或超过45,则系统会输出"不良充气". 在我的课堂上,我必须使用布尔值,这是我尝试过的.但是,返回的布尔值始终为true.我不明 ...

  3. mvn exec: java_实战|Java 测试覆盖率 Jacoco插桩的不同形式总结和踩坑记录(下)

    本文为霍格沃兹测试学院优秀学员关于 Jacoco 的小结和踩坑记录.测试开发进阶学习,文末加群. 六.注意事项汇总 修改 JAVA_OPTS 参数时,如果位置不对,可能造成代理无法启动. java - ...

  4. sonar覆盖率怎么统计的_实战|Java 测试覆盖率 Jacoco插桩的不同形式总结和踩坑记录(上)...

    本文为霍格沃兹测试学院优秀学员关于 Jacoco 的小结和踩坑记录.测试开发进阶学习,文末加群. 一.概述 测试覆盖率是老生常谈的话题.因为我测试理论基础不是很好,这里就不提需求.覆盖率等内容,直奔主 ...

  5. java接口测试工具_这 5 款实用性能测试工具,你会如何选择?

    当我们做性能测试的时候,测试协议需要用到性能测试工具.市场上有很多可以做性能测试的工具.有些是收费的,有些是开源免费的.选择的时候它是否友好支持所有的协议呢?现在带大家来看看一些行业中常用的流行的性能 ...

  6. 3ml乐谱制作工具_用于生产的ML基础结构工具(第1部分)

    3ml乐谱制作工具 重点 (Top highlight) Machine Learning (ML) is being adopted by businesses in almost every in ...

  7. java跟python对比_【多年的Java程序员总结Java与Python的对比 】

    多年的Java程序员总结Java与Python的对比 作为一个有多年职场经验的技术员,每当我遇到同行时,我都会问一句"你现在用的是什么语言?你喜欢用哪种语言?"至于答案,容后再说. ...

  8. rfc 查看工具_用于系统管理员的杀手级工具,Skype替代品,提高Linux技能,6个必读的RFC等

    rfc 查看工具 7月是Opensource.com上的SysAdmin赞赏月 SysAdminDay在7月底,但是我们整个月都在庆祝系统管理. 查看我们不断增长的SysAdmin系列 : Archi ...

  9. java list e 查找_源码(04) -- java.util.ListE

    java.util.List 源码分析(JDK1.7) ------------------------------------------------------------------------ ...

最新文章

  1. C#中生产者线程和消费者线程同步的实现
  2. ISA Server 2006的CARP与NLB的构建
  3. ubuntu下连接mysql出现Access denied for user ‘rose‘@‘localhost‘ (using password: NO)的解决方法
  4. CentOS7下搭建Nextcloud13.0.5
  5. 32 | 浅谈容器网络
  6. SVN使用MySQL验证用户名密码(HTTP)
  7. php一篇文零基础到制作在线图片编辑网站赚钱(gif压缩、九宫格裁剪、等比裁剪、大小变换)【php华为云实战】
  8. android条形图,MPAndroid组条形图未显示
  9. 计算机学院优秀主讲教师评选细则,关于转发《华南师范大学第二届“我最喜爱的导师”评选活动实施细则》的通知...
  10. 高通骁龙855刚捂热 骁龙865就现身:三星代工 7nm EUV制程
  11. JAVA NIO 简介 (netty源码死磕1.1)
  12. android中的回调简单认识
  13. 29. git ignore
  14. Fortran入门教程(十一)—— 模块
  15. mapgis转arcgis
  16. 数学笔记——导数1(导数的基本概念)
  17. 传智播客C语言视频第二季(第一季基础上增加诸多C语言案例讲解,有效下载期为10.5-10.10关闭)...
  18. 0.75次方怎么用计算机按,FR-E720-0.75K参数设置三菱FR-E720-0.75K指导手册(应用) - 三菱...
  19. Vue 获取当前日期
  20. 蓝桥杯--历届真题 回文日期【第十一届】【省赛】【B组】

热门文章

  1. 海龟股票------大跌之后最赚钱的股票
  2. 大数据集群迁移的那一夜是怎么过的|回忆录
  3. Unity---toast提示
  4. Java代码的三板斧
  5. 控制工程基础学习笔记-第4章 控制系统的频率特性
  6. c语言中的线程管理,深入解析C++编程中线程池的使用
  7. 2022年生物医用膜市场前景分析及研究报告
  8. 利用油猴插件 Tampermonkey 编写脚本以屏蔽网页指定元素——以屏蔽百度搜索右边的百度热榜为例
  9. python内置函数eval(x)的作用是什么
  10. uniapp tabBar 事件屏蔽 点击屏蔽