Jacoco 入门使用

本文介绍了Jacoco代码覆盖率工具的入门使用,包括为什么需要代码覆盖率、其工作原理和两种插桩方式。重点讲解了on the fly模式的实战应用,包括原理、配置执行步骤以及不同方式启动被测服务。此外,还简要提到了offline模式的适用场景和配置执行。
摘要由CSDN通过智能技术生成

一、背景

1. 为什么需要代码覆盖率

  • 用例与代码关联,反推测试用例是否有效、全面
  • 研发代码本身设计是否冗余

2. 原理

通过ASM在字节码中插入探针,每个探测指针都是一个BOOL变量(true表示执行、false表示没有执行),程序运行时通过改变指针的结果来检测代码的执行情况(不会改变原代码的行为)

3. 插桩方式

  • on-the-fly
  • offline
  • 两者区别

1.on-the-fly不会改变jar包大小,offline会改变jar包大小
2.offline必须退出虚拟机时才能生成覆盖率结果
3.on-the-fly模式官方推荐是首选,offline模式适合一些环境及客观原因导致不能使用时
在这里插入图片描述

二、项目实战

on the fly模式(运行时插桩)

1. 原理

1.1 利用Jacocoagent.jar在内存中动态修改class字节码

运用java Agent的机制(JaCoCo提供了自己的Agent),启动Instrumentation代理程序,代理程序在ClassLoader装载一个class前先判断是否需要对class进行注入,对于需要注入的class进行注入,动态改变字节码结构,插入 Jacoco 的探针

1.2 dump输出覆盖率结果(.exec文件)

信息可以通过文件或是Tcp的形式输出,还提供了丰富的dump输出机制,如File,Tcp Server,Tcp Client。

2. 配置执行

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值