简介
免费的、开源的、针对java的单元测试覆盖率工具。基于字节码,无需源码也可以工作。
代码覆盖率:用来衡量测试代码对功能代码的测试情况,量化说明测试的充分度。通过执行测试用例,功能代码中的哪些行被执行了,哪些行没有被执行
行覆盖:以行为单位来计算覆盖率
入门案例
- 添加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>
- mvn clean test,执行测试逻辑
- 在target目录下,可以找到jacoco生成的覆盖率文件,它是html格式的,可以在浏览器中查看

覆盖率报表:

查看详细的代码覆盖率:

覆盖报告讲解:
- 绿色部分,表示已覆盖
- 黄色部分,表示有部分分支未覆盖,例如,一个if判断,只测试了true的逻辑,没有测试false的逻辑
- 红色部分,表示没有测试到
实际开发中,通常要求覆盖率在60%以上,严格一点的也要85%