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


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

    在这里插入图片描述

    2、在 jenkins 中建立一个自由风格的项目

    在这里插入图片描述

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

    在这里插入图片描述

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

    在这里插入图片描述

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

    在这里插入图片描述

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

    在这里插入图片描述

    执行job

    1、手工执行 job 完成后,在 job 的首页上会展示一个代码覆盖率扫描的趋势图。其中 line covered 表示代码的覆盖,line missed 表示代码的丢失。

    2、点击趋势图能进入详情的页面 (M 表示丢失,C 表示已覆盖)。其中每个字段的含义为:

    在这里插入图片描述

    3、instruction:字节码指令覆盖率

    4、branch:分支代码覆盖率

    5、complexity:圈复杂度覆盖率

    6、line:行覆盖率

    7、method:方法覆盖率

    8、class:类覆盖率

    在这里插入图片描述

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

    在这里插入图片描述
    在这里插入图片描述

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

    在这里插入图片描述

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

    在这里插入图片描述

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

    在这里插入图片描述
    在这里插入图片描述


    资源分享

    最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走…

    在这里插入图片描述

    ​这些资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助…….

    在这里插入图片描述

  • 相关阅读:
    抗疫行动题材网页设计 大学生最美逆行者感动人物网页代码 众志成城万众一心抗击疫情HTML网页设计
    API接口开发规范
    [Zer0pts2020]Can you guess it?
    CSS基础入门02
    Spring Cloud Gateway 整合 sentinel 实现流控熔断
    solidity 合约转java
    两台电脑共享文件设置
    mybatis学习(7):Windows下安装MySQL详细教程
    vue 不相干的两个页面相互通信方式
    【Flutter 面试题】 为什么Flutter中的Widget使用const注解?
  • 原文地址:https://blog.csdn.net/m0_67695717/article/details/127069561