技术分享 | 代码覆盖率集成

JaCoCo,即 Java Code Coverage Library,它由 EclEmma 团队根据多年来使用和集成现有库的经验教训而创建的一个开源的代码覆盖率工具,支持 Java 和 Kotlin;支持计算测试代码对项目的覆盖情况,能定位到测试未覆盖的代码部分;同时它也能检查程序中的废代码和不合理的逻辑提高质量;JaCoCo 能本地进行代码的检查,也可以把它与持续集成工具 Jenkins 进行集成,这样就能在代码提交后自动对提交的代码进行覆盖率的验证,保证提交代码的质量。

环境准备

  • Jenkins 服务
  • 执行代码覆盖率的节点机器,此机器上需要部署好 Java 和 Maven 工具
  • Jenkins 上需要安装 JaCoCo Plugin 插件
  • 被测的项目代码 https://gitee.com/ceshiren/iTest.git
  • Junit 单元测试框架

项目的配置

  1. 在 Maven 项目的配置 pom.xml 文件中配置 jacoco-maven-plugin 工具

image1080×560 93 KB

  1. 在 jenkins 中建立一个自由风格的项目

image1080×596 76.3 KB

  1. 配置好运行的节点机器,此机器是环境准备中的节点机器。

image1080×568 102 KB

  1. 配置代码源,将被测项目代码的 git 地址配置到此处

image1080×653 52.5 KB

  1. 在构建(Build)中点击增加构建步骤(Add build step),构建步骤中选择执行 shell(Execute shell)

image1080×511 57.4 KB

  1. 在构建后步骤(Post-build Actions)中添加输出信息的配置,选择 Record JaCoCo Coverage report 可以保持默认

image1080×622 123 KB

执行job

  1. 手工执行 job 完成后,在 job 的首页上会展示一个代码覆盖率扫描的趋势图。其中 line covered 表示代码的覆盖,line missed 表示代码的丢失。
  2. 点击趋势图能进入详情的页面 (M 表示丢失,C 表示已覆盖)。其中每个字段的含义为:

image986×627 86.1 KB

  1. instruction:字节码指令覆盖率
  2. branch:分支代码覆盖率
  3. complexity:圈复杂度覆盖率
  4. line:行覆盖率
  5. method:方法覆盖率
  6. class:类覆盖率

image1080×545 66.3 KB

  1. 在包的信息展示中还能继续往详细信息点击,查看更加详细的覆盖情况,未覆盖的代码会被标识成红色。

image1080×594 89.5 KB

  1. 从上个步骤上看,有一个长度大于 10 的分支没有覆盖到,此时给项目的测试代码新增一个 case 后提交代码到 git 上。

  1. 此时重新构建任务后,将会发现前面未被覆盖的代码行已经实现了覆盖。

image1080×490 56.7 KB

  1. 在项目的 main 函数中增加一些无用代码,重新构建后看结果,此时有新增了两行代码未被覆盖。从常识上分析两个整数相乘是不会抛错,所以此时的 try 动作是无用代码,不会进入到 catch 的分支。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码小怡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值