首页 > 其他分享 >技术分享 | 代码覆盖率集成

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

时间:2022-09-27 11:56:11浏览次数:71  
标签:集成 覆盖 覆盖率 代码 配置 构建 分享 JaCoCo

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

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 工具

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

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

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

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

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

执行job

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

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

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

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

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

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

⬇️ 喜欢这篇文章的话烦请点个“赞”哦!大家的支持很重要

PS:有问题可以联系我们~ v ceshiren001

>>更多技术文章分享和免费资料领取

标签:集成,覆盖,覆盖率,代码,配置,构建,分享,JaCoCo
From: https://www.cnblogs.com/hogwarts/p/16734064.html

相关文章

  • 报告分享|2022中国智能网联汽车人才前沿洞察报告
     报告链接:http://tecdat.cn/?p=28611 1、软件算法类研发人才供不应求随着智能化的发展,流程化、重复性的劳动逐渐被机器人代替,智能网联车企对研发人员需求增加,人才队伍......
  • 报告分享|2022年90后高收入人群洞察报告
     报告链接:http://tecdat.cn/?p=2860990后高收入人群中,男性占比超7成,一定程度反应出男性比女性更早拿到高薪。婚姻情况中,超9成的他们已步入婚后生活90后高收入人群中,本科......
  • 报告分享|2022年·美妆用户洞察报告
    报告链接:http://tecdat.cn/?p=28697红书的美妆用户以女性为主,主力群体为95、00后,近7成美妆用户拥有大学及以上学历。小红书美妆用户消费能力强,愿意在护肤/彩妆产品上投入......
  • 案例分享 生产环境逐步迁移至k8s集群 - pod注册到consul
    #案例分享生产环境逐步迁移至k8s集群-pod注册到consul#项目背景多套业务系统,所有节点注册到consul集群,方便统一管理使用consul的dns功能,所有节点hostname能pin......
  • 时间管理的七句话 -- 阮一峰老师的小分享
     昨天,我做了一个小分享,关于时间管理。1,"进程切换非常昂贵,避免多任务,保持单进程。"不要同时做多件事,结果可能都没做好,还拖长了工作时间。2,"研究表明,集中注意力......
  • 秋初 WAMP 集成环境
    基于QT的PHP集成开发环境https://gitee.com/xiaqiuchu/wamp-integrated-environment界面预览已实现功能服务的启动、关闭、重启。php版本切换apache版本切换(只......
  • 【安全测试】fortify分享培训资料
    一、安全测试类型介绍  二、安全测试工具介绍11测试软件面向测试场景AWVS适用于系统漏洞扫描nessus适用于系统和数据库漏洞扫描,包括但不限于:主机、网......
  • 报告分享|2022东南亚跨境电商出海报告
    报告链接:http://tecdat.cn/?p=28620从东南亚市场的发展环境、出海企业特征、配套的跨境服务等方面,对东南亚跨境电商出海市场进行了全面的剖析。其中,基于在数字支付、跨境......
  • 报告分享|解析无人驾驶技术的确定性与不确定性报告
    报告链接:http://tecdat.cn/?p=286182020年至今,国家大力推进“新基建”,加快新型基础设施建设的步伐,主要包括5G基建、工业互联网、大数据中心、人工智能、新能源汽车及充电......
  • 报告分享|2022中国消费者洞察报告
    报告链接:http://tecdat.cn/?p=28628概述随着中国经济走向新常态,中国消费市场已告别野蛮生长,进入发展新阶段,未来增长潜力仍然十分巨大。企业想在后疫情时代持续增长,需要......