ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java代码覆盖实战

2021-03-10 14:04:30  阅读:223  来源: 互联网

标签:实战 fly java 覆盖率 代码 jar class 生成 jacoco


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代码覆盖实战

标签:实战,fly,java,覆盖率,代码,jar,class,生成,jacoco
来源: https://www.cnblogs.com/orangezhangzz/p/14504294.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有