使用 Python 和 Jacoco 统计代码覆盖率:一种简单而强大的方法

代码覆盖率实现之路

在频繁快速的迭代过程中,如何有效保证测试覆盖的充分性?是值得思考的问题。

覆盖率是度量完整性的一个手段,目前引入了需求覆盖率,接下来希望可以引进代码覆盖率,通过覆盖率来评估测试是否充分,开发提交的改动是否了解全面,从而更好的进行补充测试,提示上线的信心。

JaCoCo简介

JaCoCo是一个开源的覆盖率工具,它针对的开发语言是java,其使用方法很灵活,可以嵌入到Ant、Maven中

插桩的本质

jacoco介入部署过程的本质,就是插桩。

可以是编译时插桩、也可以是运行时插桩,这就是所谓Offline模式和On-the-fly模式。

两种模式区别

  • On-The-Fly模式优点在于无需修改源代码,可以在系统不停机的情况下,实时收集代码覆盖率信息

  • Offine模式优点在于系统启动不需要额外开启代理,但是只能在系统停机的情况下才能获取代码覆盖率

需要实时收集,所以这里选择On-The-Fly模式。

本质

jacoco的on-the-fly模式的插桩过程,其实就是在测试环境部署的时候,让jacoco的相关工具,介入部署过程,也就是介入class文件的加载,

在加载class的时候,动态改变字节码结构,插入jacoco的探针。

本质:jacoco 以 tcpserver 方式进行插桩的本质,就是如果应用启动过程中,进行了jacoco插桩,且成功了。它会在你当前这个启动服务器中,

在一个端口{$port}上,开启一个tcp服务,这个tcp服务,会一直接收jacoco的执行覆盖率信息并传到这个tcp服务上进行保存。

再通俗将,其实就是介入下面这个命令的启动过程:


java -jar


不同形式的插桩配置

基于公司启动服务的方式,这里只介绍jar包方式启动时的配置

使用jar包方式启动

在 java -jar 启动的时候,加入-

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值