Jacoco原理

代码插桩

On-the-fly插桩:

JVM中通过-javaagent参数指定特定的jar文件启动Instrumentation的代理程序,代理程序在通过Class Loader装载一个class前判断是否转换修改class文件,将统计代码插入class,测试覆盖率分析可以在JVM执行测试代码的过程中完成。

Offline模式:

在测试前先对文件进行插桩,然后生成插过桩的class或jar包,测试插过桩的class和jar包后,会生成动态覆盖信息到文件,最后统一对覆盖信息进行处理,并生成报告。

两种方式对比:

On-the-fly无需提前进行字节码插桩。

On-the-fly无需停机(Offline需要停机),可以实时获取覆盖率。

On-the-fly更加方便获取代码覆盖率,但是代理服务会有一定的性能损耗。

springboot集成jacoco实现覆盖率统计

1.被测项目的部署与插桩操作

执行jacoco的配置,包含jacoco地址 ,端口 ,获取方法

-javaagent:H:/xx/xx/jacocoagent.jar=includes=*,output=tcpserver,port=7703,address=localhost,dumponexit=false
执行成功后maven 会出现 jacoco的相关插件
jacoco相关参数

2.获取被测服务的覆盖率数据(jacoco-dump)

启动后点击 jacoco插件的dump会生成jacoco源文件

3.生成可视化html报告(jacoco-report)

点击jacoco的report 生成覆盖率报告

覆盖率报告

访问接口后再次生成覆盖率

覆盖率数值发生变化

分布式覆盖率报告合成使用 merge

jacocomerge底层会读取后缀为exec文件将其合成为新的文件

在企业中会将exec动态上传到版本服务器进行管理,在固定路径中动态合成

java代码覆盖实战

最新文章

  1. PHP环境搭建
  2. 25M电子琴实现
  3. Android -- 思考 -- 为什么要在项目中使用MVP模式
  4. 【JQGRID DOCUMENTATION】.学习笔记.4.Navigator
  5. robotframework笔记8
  6. mysql中的null字段值的处理及大小写问题
  7. [zsh]zsh常用小技巧
  8. 强大的JQuery(三)--操作html与遍历
  9. 【 D3.js 高级系列 】 总结
  10. HDOJ -- 4699
  11. When does layoutSubviews get called?
  12. SB中使用Autolayout设置到父视图的间距为0
  13. bzoj 2436: [Noi2011]Noi嘉年华
  14. Android 学习笔记一 自定义按钮背景图
  15. 通过Microsoft Learn进行学习以提升技能
  16. LINUX文件及目录管理命令基础(2)
  17. java 字符串的运算公式直接转计算结果
  18. Linux删除以减号开头的文件
  19. autofac使用Common Serivce Locator跟随wcf,mvc,web api的实例控制
  20. windows phone 8.1 让项目开启蓝牙genericAttributeProfile

热门文章

  1. 使用 C++ WinRT 组件
  2. JavaScript实现,判断一个点是否在多边形内(简直nice,希望能帮到你)
  3. 【网站公告】避免反对百度的限制措施:百度搜索过来的访问会自动禁用js权限
  4. 我的第一个开源项目 Kiwis2 Mockserver
  5. 如何在 Matlab 中绘制带箭头的坐标系
  6. 跟我一起写 Makefile(三)
  7. 图 邻接表 邻接矩阵 BFS生成树 DFS生成树
  8. 用kivy学习制作简易调色画板app
  9. ACL的配置
  10. 线程队列 concurrent 协程 greenlet gevent