Jacoco 计算单元测试代码覆盖率

2023-05-16

文章目录

    • 实现步骤
        • 一、创建一个`maven` 项目
        • 二、引入`Jacoco` 的依赖
        • 三、增加`Jacoco maven plugin`相关配置
        • 四、编辑一段代码用于测试
        • 五、编写测试方法
        • 六、执行单元测试并计算代码覆盖率
        • 七、JaCoCo报告解读
        • 八、完整实现代码

实现步骤

一、创建一个maven 项目

  • 不选择模板

二、引入Jacoco 的依赖

  • https://mvnrepository.com/artifact/org.jacoco/jacoco-maven-plugin
<dependency>
    <groupId>org.jacoco</groupId>
    <artifactId>jacoco-maven-plugin</artifactId>
    <version>0.8.7</version>
</dependency>

三、增加Jacoco maven plugin相关配置

<build>
        <plugins>
            <plugin>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <version>0.8.7</version>
                <configuration>
                    <destFile>target/test-coverage/jacoco-unit.exec</destFile>
                    <dataFile>target/test-coverage/jacoco-unit.exec</dataFile>
                </configuration>
                <executions>
                    <execution>
                        <id>default-prepare-agent</id>
                        <goals>
                            <goal>prepare-agent</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>jacoco-site</id>
                        <phase>test</phase>
                        <goals>
                            <goal>report</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

四、编辑一段代码用于测试

public class JunitDemo {
    /**
     * 两数之和
     *
     * @param a
     * @param b
     * @return
     */
    public int sumExample(int a, int b) {
        return a + b;
    }

    /**
     * 两数取模
     *
     * @param a
     * @param b
     * @return
     */
    public int modExample(int a, int b) {
        return a % b;
    }
}

五、编写测试方法

  • 注意:
  • 测试方法的方法名:被测试方法的方法名前,加test
  • sumExample 对应的测试方法名为testSumExample
public class JunitDemoTest {
    private static JunitDemo junitDemo = new JunitDemo();

    @Test
    public void testSumExample() {
        int result = junitDemo.sumExample(1, 2);
        Assertions.assertEquals(3, result);
    }

    @Test
    public void testModExample() {
        int result = junitDemo.modExample(2, 2);
        Assertions.assertEquals(0, result);
    }
}

六、执行单元测试并计算代码覆盖率

  • 使用maven命令执行单元测试
mvn clean test
  • 执行成功之后,可在target目录 下找到覆盖率报告
  • 路径是: target/site/ index. xml
  • 在浏览器中打开即可
    在这里插入图片描述

七、JaCoCo报告解读

  • 其中红色代表没有被执行到
  • 绿色代表被充分测试了
  • 黄色代表该行的代码的逻辑只有部分被测试到了
    在这里插入图片描述

八、完整实现代码

  • junit-demodev-jacoco 分支
  • https://gitee.com/aoweibrave/junit-demo/tree/dev-jacoco
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Jacoco 计算单元测试代码覆盖率 的相关文章

  • jacoco的使用

    一 概述Java 覆盖率 Jacoco 插桩的不同形式总结和踩坑记录 TesterHome 测试覆盖率 xff0c 老生常谈的话题 因为我测试理论基础不是很好 xff0c 就不提什么需求覆盖率啦这样那样的主题了 xff0c 直奔主题 xff
  • 在idea中使用JaCoCo插件统计单元测试覆盖率

    在后台工程师开发完新代码交给QA进行测试时 软件测试人员一般都会要求后台开发对单元测试的覆盖率达到一定的标准 例如我们的标准是分支覆盖率达到50 以上 函数覆盖率达到50 以上 在idea中查看覆盖率挺简单的 idea中支持三种插件来查看覆
  • Intellij Idea单元测试覆盖率插件JaCoCo的使用

    JaCoCo是Java代码单元测试覆盖率工具 可以用于IDE 也可以用于Maven等构建工具 IDE 主要介绍Intellij Idea中的使用 Eclipse请查看Jacoco Eclipse简单操作 Intellij Idea用法 调整
  • JaCoCo助您毁灭线上僵尸代码

    一 现状 问题 随着需求不断迭代 业务系统的业务代码突飞猛进 在你自豪于自己的代码量产出很高时 有没有回头看看线上真正的客户使用量又有多少呢 费事费力耗费大量人力 成本上线的功能 可能一年没人使用 如果不进行适当的下线 就会增加系统维护成本
  • SonarQube -integrationTest.exec -sonar Runner (Gradle) 或“sonar-runner”命令 - 显示 0.0% 覆盖率

    运行基于 Gradle 的构建和集成测试后 我在 build jacoco 文件夹中成功生成了 Jacoco 的 2 个 exec 文件 梯度命令 gradle clean 构建集成测试 完成后 它会在 build jacoco 文件夹下生
  • JaCoCo gradle 插件排除

    我想从 JaCoCo 中排除一些类 但排除似乎不起作用 例如 我想排除所有以 Ies 结尾的 Java 类 例如 com company EmployeeS 我已经尝试了以下代码 但当我将其推送到声纳 使用 JacocoTestReport
  • 合并 Android 单元测试和连接测试代码覆盖率数据已损坏

    Android Gradle 插件 2 3 3 版本能够提供合并的单元测试和连接的测试代码覆盖率数据 在版本 3 0 0 中 此功能被破坏 因为每种测试类型都使用不同且不兼容的 JaCoCo 版本 拉斐尔 托莱多提供中等博客文章展示了如何在
  • SonarQube 报告中 Kotlin 项目的覆盖率为 0%

    我正在设置通过 SonarQube 服务器分析项目 使用的工具集是 科特林 1 3 61 摇篮6 0 1 雅可可0 7 9 声纳Qube 7 5 SonarQube Gradle 插件 2 7 问题是我在 SonarQube 中有 0 0
  • 从 Jenkins 中的 Jacoco 覆盖范围中排除包

    由于我的 Jenkins 管道失败 尝试从覆盖率报告中排除包 我有一个包含所有 POJO s 的子项目 我不想为所有这些编写 uittest 因此 他们会降低分支 线路覆盖率 使覆盖率低于阈值并使我的构建失败 应该可以排除一些软件包 但我无
  • JaCoCo - 从报告中排除 JSP

    在 JaCoCo 生成的 Maven 站点报告中 我得到的覆盖率非常差 因为我编译的所有 JSP 都包含在内 而且它们很长 我尝试了以下内容reporting
  • Gradle jacoco 代码覆盖率 - 然后在 Jenkins 中发布/显示

    我正在尝试为 Java 应用程序项目设置代码覆盖率 项目名称 新应用 项目结构 src java 源代码 src java test 单元测试 Junit 测试 it 测试 集成测试 测试 测试 验收测试 tomcat 包含tomcat启动
  • 将 jacoco-agent.properties 打包到 APK 中以便可以读取?

    这是我的情况 背景 我正在调查我们的 Android 应用程序的代码覆盖率 该应用程序是使用 Gradle 和 Android Studio 构建的 我在两种情况下需要代码覆盖率报告 在手动测试期间 以及在使用我们庞大的 Appium 套件
  • 如何计算 Selenium 测试相对于 Web 应用程序代码的代码覆盖率

    我需要将我的硒测试的代码覆盖率捕获到所覆盖的服务器代码 Web 应用程序源代码 中的源代码量 例如 登录功能的测试应捕获 Web 应用程序中登录功能所涵盖的代码量 否则需要知道它在完成的场景的 Web 应用程序代码中触及了哪个包或类 例如登
  • 衡量代码质量时的代码行 VS 指令

    我有一个由许多模块组成的项目 我正在运行两者JaCoCo http www eclemma org jacoco 对于单元测试覆盖率和Sonar https www sonarqube org 为了代码质量 由于技术原因 我无法对我的模块之
  • switch 语句的 Jacoco 覆盖范围

    我正在努力为我正在开发的库获得 100 的代码覆盖率 但我似乎在 switch 语句和覆盖率方面遇到了一些问题 我根本不理解 我目前正在使用 Jacoco 0 7 2 因为每个新版本似乎都与 Robolectrics 发生冲突 我测试了一个
  • Gradle Jacoco 和 JUnit5

    我们刚刚将单元测试移植到 JUnit5 意识到这仍然是相当早期的采用 谷歌上几乎没有任何提示 最具挑战性的是为我们在 jenkins 上使用的 Junit5 测试获取 jacoco 代码覆盖率 因为这花了我几乎一天的时间才弄清楚 所以我想我
  • 将 JaCoCo 与 SONAR 集成以实现单元和集成测试覆盖

    有没有人尝试使用 ANT 构建配置 JaCoCo 将单元测试和集成测试的覆盖范围转储到 2 个不同的文件中 以便 SONAR 使用它们 这是一个可行的解决方案 为单元测试和集成测试生成报告 该解决方案使用的是append战略 请注意 为了在
  • 如何使用 JaCoCo 忽略内部/嵌套类?

    我试图忽略一些生成的类 并且这些类被很好地忽略 但是 如果这些类具有内部类 则尽管父类被排除 但这些类仍然会被包含在内 这是我的配置
  • 运行 Maven Surefire 测试插件 Java 11 时出错

    我正在使用 Maven Surefire 插件版本 2 22 1 在 Team City 中运行 Spring Boot 应用程序的一些测试 Spring Boot 版本是 2 1 2 我在配置中指定使用分叉的 Java 11 jvm 如下
  • SonarQube 不收集代码覆盖率

    我在使用 sonar runner 和 jacoco 设置 gradle 时遇到问题 除了代码覆盖率之外 一切都很好 我已经尝试了一切但没有结果 这是我的 build gradle 文件 apply from dependencies gr

随机推荐