【强力推荐】jacoco代码测试覆盖率实战教学全集,7天从入门到精通【理论+实战 赶紧拿走】_哔哩哔哩_bilibili
on-the-fly: 测试的时候代码是动态的, 需要测试就帮你插桩, 不测就不帮你插桩
offline: 先把被测代码拿到一次性直接插桩, 一运行桩就已经插好了, 直接生成报告
大多数时候都可以使用on-the-fly, 这样不会污染源码
二、jacoco的使用
拷贝被测试项目
(1)下面命令的含义: 这个命令会启动被测项目, 并且去访问localhost+6300的时候就会把覆盖率数据一股脑输出出来
javaagent: 使用javaagent去启动
include: 表示需要在哪些包下面插桩
*表示所有的(也可以根据自己的需求选择包)
output: 输出有三个选项: tcpserver:执行下6.4的命令时会将所有内容一股脑输出; tcpclient: 用的比较少; file在本地生成文件,终止的时候就会把所有插桩的内容写到文件中
port: 使用tcpserver就需要指定端口
(2)
(3)生成覆盖率的报表: 必须有class信息、java文件、源文件
eg:
先启动jacoco
使用postman测试接口是否成功 接口返回成功后, 查看代码是否被覆盖
查看接口是否被覆盖之前不能停止之前的服务, 否则请求不到6300, 执行截图6.4中的命令
执行截图6.5 生成报表
查看index.html文件
element:被覆盖的对象: 可能是一个包下面的, 可以是一个类或者一个对象
Missed Instructions Cov: 代码覆盖率, 字节码的覆盖率
Cov就是覆盖率的意思
Missed Branches: 分支
Missed Cxty: 代码里面的if switch, while, for等, 代码循环等的流程
Missed Lines: 行
Missed Methods: 方法
Missed Classed: 类
2、jacoco的增量覆盖: 对比两次发布版本增量覆盖率之间的区别(只收集被更改的代码, 不看全量的, 上面的方式是看的全量的)
之前都是针对一次性的版本的方式
jacoco处理包二次开发,生成增量报告
获取两次提交代码的差异
eg: 拷贝后的目录:
修改包文件: 将原先的demo-0.0.1删除, 将新拷贝进来的spring...修改为 demo-0.0.1,得到下面的目录
启动jacoco 做测试: 启动postman捅接口
生成exec文件 计算增量代码
访问上面生成的html链接 发送之后, 可以看到哪里发生了变化
拷贝上面的uiniquoData放到上面截图7.3中的4步骤,获取增量报告
加参数后运行是增量, 不加参数就是全量
查看增量的报告, 只会统计发生报告的类
上面使用了nohup后台运行的方式, 启动脚本后不会被关掉: 因为jekins 有守护进程的概念,当脚本跑完之后会自动把pipeline中启动的项目关掉
jekins可以直接搜索安装jacoco相关的插件 但是由于增量有二次整合, 所以不能直接采用上面的方式安装插件
jekins和jacoco结合一些页面操作, 平时使用不多, 需要使用的时候在看即可
先把被测文件放到jekins上, 再到jekins上安装pipe插件, 输入上面的脚本
(3)整合jekins生成报告