单元测试之测试覆盖率-jacoco基本使用

简介

免费的、开源的、针对java的单元测试覆盖率工具。基于字节码,无需源码也可以工作。

代码覆盖率:用来衡量测试代码对功能代码的测试情况,量化说明测试的充分度。通过执行测试用例,功能代码中的哪些行被执行了,哪些行没有被执行

行覆盖:以行为单位来计算覆盖率

入门案例

  1. 添加maven依赖
xml 复制代码
<!-- 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插件-->
<plugin>
  <groupId>org.jacoco</groupId>
  <artifactId>jacoco-maven-plugin</artifactId>
  <version>0.8.6</version>
  <executions>
      <!--JaCoCo 运行时代理,用于记录执行数据。它记录了执行的行数、回溯的行数等。
        默认情况下,将执行数据写入文件target/jacoco-ut.exec-->
      <execution>
          <id>prepare-agent</id>
            <goals>
             <goal>prepare-agent</goal>
            </goals>
      </execution>
      <!--默认从文件中读取执行数据target/jacoco-ut.exec,将代码覆盖率报告写入目录
        target/site/jacoco/index.html-->
      <execution>
            <id>report</id>
            <phase>test</phase>
               <goals>
               <goal>report</goal>
               </goals>
        </execution>
    </executions>
</plugin>
  1. mvn clean test,执行测试逻辑
  2. 在target目录下,可以找到jacoco生成的覆盖率文件,它是html格式的,可以在浏览器中查看

覆盖率报表:

查看详细的代码覆盖率:

覆盖报告讲解:

  • 绿色部分,表示已覆盖
  • 黄色部分,表示有部分分支未覆盖,例如,一个if判断,只测试了true的逻辑,没有测试false的逻辑
  • 红色部分,表示没有测试到

实际开发中,通常要求覆盖率在60%以上,严格一点的也要85%

相关推荐
liulilittle21 小时前
Lua中检测32位序号环绕的方法
junit·单元测试·lua
汽车仪器仪表相关领域2 天前
液力传动精准标定 + 智能换挡控制,动力总成测试新高度:GZCVL T‑IV 变矩器变速箱测试系统实战全解
功能测试·单元测试·汽车·压力测试·可用性测试·安全性测试
程序员小远2 天前
单元测试知识详解
自动化测试·软件测试·python·测试工具·职场和发展·单元测试·测试用例
Warren982 天前
Spring Boot + JUnit5 + Allure 测试报告完整指南
java·spring boot·后端·面试·单元测试·集成测试·模块测试
steel80882 天前
Spring Boot 整合 log4j2 日志配置教程
spring boot·单元测试·log4j
川石课堂软件测试3 天前
接口测试需要注意的一些BUG
网络·数据库·python·单元测试·bug·压力测试·tornado
CodeCraft Studio4 天前
Parasoft C/C++嵌入式软件测试解决方案:安全、可靠且符合标准
开发语言·c++·安全·单元测试·代码规范·parasoft·嵌入式软件测试
汽车仪器仪表相关领域4 天前
全工况精准标定 + 智能安全防护,建筑机械防坠生命线:GZCVL T‑II 安全防坠器测试系统实战全解
功能测试·测试工具·安全·单元测试·汽车·压力测试·可用性测试
KevinGuo4574 天前
【前后端开发知识 - 边开发边学习】什么的单元测试、集成测试和E2E测试?
学习·单元测试·集成测试
南昌彭于晏5 天前
springcloud+openFeign单元测试解决初始化循环依赖的问题
spring·spring cloud·单元测试