• 覆盖率检查工具:JaCoCo 食用指南


    image-20220613092650006

    一:概述

    众所周知,软件的代码覆盖率是衡量软件质量的重要指标,

    我们今天简单介绍 JaCoCo 的实际使用示例,它是目前在大多数 Java 项目中应用最广泛的覆盖率检测框架

    更多资料参考:JaCoCo 官网

    二:引入 Maven 依赖

    在 Java 项目中为了方便使用 JaCoCo,我推荐使用它提供的这款 Maven Plngin,在你的 pom.xml 加入依赖:

    <plugin>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
        <version>${lacoco-last-version}</version>
        <executions>
            <execution>
                <id>default-prepare-agent</id>
                <goals>
                    <goal>prepare-agent</goal>
                </goals>
            </execution>
            <execution>
                <id>default-report</id>
                <goals>
                    <goal>report</goal>
                </goals>
            </execution>
        </executions>
    </plugin>
    

    这里使用 ${lacoco-last-version} 变量,推荐你尽量使用最新的 Maven 版本

    三:生成覆盖率报告

    准备环境:

    • Maven 3.x+
    • 你的项目必须包含合理单元测试

    在你项目在执行命令:

    $ mvn clean install # 发布构建到你的本地 Maven 仓库
    

    当项目编译完成后,在项目目录:target/site/jacoco/index.html 即可查看到图形化的测试报告,如下:

    coverage 图片来自 baeldung

    点击链接,你可以查看每个类的代码覆盖情况,如下:

    截图来自 Baeldung

    小知识:index.xml 只是覆盖率的 UI 展示,覆盖率的真正数据存储在 target/site/jacoco/jacoco.xml 文件中,jacoco.xml 结合 SonarQube 等工具使用会有更好的覆盖率报告展示效果,不过这是后话,后面有机会再聊

    我们简单说明以上三种颜色是怎么回事:

    • 红色标记:表示代码块没有被测试的代码
    • 黄色标记:通常表示只有部分分支被覆盖
    • 绿色标记:表示代码已经全部被单元测试执行过

    以下是一个 100% 覆盖率的示例:

    截图来自 Baeldung

    覆盖率详细情况:

    截图来自 Baeldung

    补充:JaCoCo 涉及的概念比较多,有兴趣可以看官网对其他概念名词的解释,这里不多赘述

    四:最低覆盖率限制

    在真实项目开发中,我们会为项目设置一个覆盖率指标,未达标的项目会无法通过构建,或者无法通过 CI 集成

    那么在项目中,我们可以这样设置覆盖率的最小值限制,如下:

    <execution>
        <id>jacoco-check</id>
        <goals>
            <goal>check</goal>
        </goals>
        <configuration>
            <rules>
                <rule>
                    <element>PACKAGE</element>
                    <limits>
                        <limit>
                            <counter>LINE</counter>
                            <value>COVEREDRATIO</value>
                            <minimum>0.50</minimum>
                        </limit>
                    </limits>
                </rule>
            </rules>
        </configuration>
    </execution>
    

    如上,当项目覆盖率低于 50% 的时候,Maven 就会提示构建事情

    五:总结

    本文简单介绍 JaCoCo 最基本使用和上手,希望你可以通过官网探索更多的高级功能

    关于覆盖率给你一些建议:

    • 覆盖率指标大多数情况下仅作为参考,不要用它作为考核指标
    • 不要过于追求覆盖率指标,100% 的覆盖率也不能代表你的项目没有 BUG

    上文演示的项目源代码可以在 GitHub Project 中找到,你可以自己拉下来跑跑看

  • 相关阅读:
    开发微信App支付
    SAP 数据类型
    SAP RFC函数
    单点登录
    集中式与分布式
    SAP 表类型
    独立软件供应商
    SAP 优缺点
    SAP 使用
    SAP 费用
  • 原文地址:https://www.cnblogs.com/xiao2shiqi/p/16370471.html
Copyright © 2020-2023  润新知