如何在 Java 应用程序中使用 JaCoCo 生成代码覆盖率报告?

Posted boonya

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在 Java 应用程序中使用 JaCoCo 生成代码覆盖率报告?相关的知识,希望对你有一定的参考价值。

测试是软件开发生命周期中最重要的部分。未经测试,软件无法部署。为了测试 Java 应用程序,我们主要使用 Junit。JUnit 框架是一个用于测试的 Java 框架。现在,当需要在 Java 中执行测试时,JUnit 被用作标准。但是什么是代码覆盖率,什么是 JaCoCo?代码覆盖率是一种软件指标,用于衡量在自动化测试期间执行了多少行代码。换句话说,我们也可以说代码覆盖率描述了自动化测试覆盖的代码百分比,它检查哪些代码部分在测试套件期间运行,哪些不运行。 

JaCoCo 代表Ja va Co de Co verage 。它是一个免费的 Java 代码覆盖库,由 EclEmma 团队创建。它创建代码覆盖率报告,并与 IntelliJ IDEA、Eclipse IDE 等 IDE 很好地集成。JaCoCo 还与 Jenkins、Circle CI 等 CI/CD 工具以及 SonarQube 等项目管理工具集成。所以在本文中,我们将在 JaCoCo maven 插件的帮助下创建一个示例 Java 应用程序并生成代码覆盖率报告。 

程序:

  1. 创建一个简单的 Java 应用程序
  2. 在应用程序中记下一些测试用例
  3. 添加 JaCoCo maven 插件
  4. 添加 JaCoCo 插件后更新代码
  5. 添加依赖项后单击Maven选项
  6. 选择清洁测试
  7. S选择运行按钮(绿色三角形)
  8. 导航代码覆盖率。

分步实施

第 1 步:创建一个简单的 Java 应用程序,并使用 Junit 在应用程序内部编写一些测试用例,或者您也可以使用 Mockito。 

相关文章:您可以参考这篇文章How to Write Test Cases in Java Application using Mockito and Junit?并创建一个示例项目。 

第 2 步:将 JaCoCo maven 插件添加到您的pom.xml文件中。 

JaCoCo 的插件如下: 

  • XML
<build>         <plugins>             <plugin>                 <groupId>org.jacoco</groupId>                 <artifactId>jacoco-maven-plugin</artifactId>                 <version>0.8.5</version>                 <executions>                     <execution>                         <goals>                             <goal>prepare-agent</goal>                         </goals>                     </execution>                     <!-- attached to Maven test phase -->                     <execution>                         <id>report</id>                         <phase>test</phase>                         <goals>                             <goal>report</goal>                         </goals>                     </execution>                 </executions>             </plugin>         </plugins> </build>

 

 

以下是添加 JaCoCo 插件后pom.xml文件的更新代码。

  • XML
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">     <modelVersion>4.0.0</modelVersion>       <groupId>org.example</groupId>     <artifactId>mockito-demo</artifactId>     <version>1.0-SNAPSHOT</version>       <dependencies>         <dependency>             <groupId>junit</groupId>             <artifactId>junit</artifactId>             <version>4.8.2</version>         </dependency>         <dependency>             <groupId>org.mockito</groupId>             <artifactId>mockito-all</artifactId>             <version>2.0.2-beta</version>         </dependency>     </dependencies>       <build>         <plugins>             <plugin>                 <groupId>org.jacoco</groupId>                 <artifactId>jacoco-maven-plugin</artifactId>                 <version>0.8.5</version>                 <executions>                     <execution>                         <goals>                             <goal>prepare-agent</goal>                         </goals>                     </execution>                     <!-- attached to Maven test phase -->                     <execution>                         <id>report</id>                         <phase>test</phase>                         <goals>                             <goal>report</goal>                         </goals>                     </execution>                 </executions>             </plugin>         </plugins>     </build>       <properties>         <maven.compiler.source>11</maven.compiler.source>         <maven.compiler.target>11</maven.compiler.target>     </properties>   </project>

第 3 步:添加依赖项后,单击右上角的Maven选项,如下图所示。然后选择清洁测试,然后选择运行按钮(绿色三角形)。 

 

 

现在您可以看到您的测试结果,如下图所示。并且您的代码覆盖率报告已经生成。但是哪里?请参阅步骤 4。 

 

 

第 4 步:要获得代码覆盖率报告,请导航到目标 > 站点 > jacoco > index.html > 右键单击​​ > 打开方式 > 浏览器 > 以及您的首选浏览器。所以基本上index.html是你的代码代码覆盖率报告文件。 

 

所以你可以看到你的报告会像这样显示,百分比完全取决于你是如何编写测试用例的。 

注意:绿色表示已覆盖所有代码行,这意味着您已为所有单元编写了测试用例。如果您遇到黄色线,则部分代码已被覆盖,如果您遇到红色,则代码尚未被覆盖。 

 

以上是关于如何在 Java 应用程序中使用 JaCoCo 生成代码覆盖率报告?的主要内容,如果未能解决你的问题,请参考以下文章

Maven工程配置代码覆盖工具Jacoco

安卓项目中有maven库的依赖(aar/jar)。如何使用jacoco测试依赖库的覆盖率呢

Jacoco 是不是记录单元测试持续时间?

如何在eclipse中安装与使用jacoco

jacoco + eclipse单元测试覆盖率

JaCoCo:分析单元测试覆盖率的利器