前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >技术分享 | 代码覆盖率集成

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

原创
作者头像
Hogwarts_测试
发布2022-09-27 13:47:50
4620
发布2022-09-27 13:47:50
举报
文章被收录于专栏:软件测试开发技术

本文节选自霍格沃兹测试开发学社内部教材

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

image1080×700 54.5 KB

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

image1080×643 117 KB

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

image1080×490 56.7 KB

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

image1080×513 74.3 KB

image1080×451 52.3 KB

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
持续集成
CODING 持续集成(CODING Continuous Integration,CODING-CI)全面兼容 Jenkins 的持续集成服务,支持 Java、Python、NodeJS 等所有主流语言,并且支持 Docker 镜像的构建。图形化编排,高配集群多 Job 并行构建全面提速您的构建任务。支持主流的 Git 代码仓库,包括 CODING 代码托管、GitHub、GitLab 等。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档