使用JaCoCo Maven插件创建代码覆盖率报告

这篇博客文章描述了我们如何使用JaCoCo Maven插件为单元和集成测试创建代码覆盖率报告。

我们的构建要求如下:

运行测试时,我们的构建必须为单元测试和集成测试创建代码覆盖率报告。
代码覆盖率报告必须在单独的目录中创建。换句话说,必须将用于单元测试的代码覆盖率报告创建到与用于集成测试的代码覆盖率报告不同的目录中。
让我们开始吧。

配置JaCoCo Maven插件

我们使用JaCoCo Maven插件有两个目的:

  • 它使我们可以访问JaCoCo运行时代理,该代理记录了执行覆盖率数据。
  • 它根据JaCo​​Co运行时代理记录的执行数据创建代码覆盖率报告。
  • 我们可以按照以下步骤配置JaCoCo Maven插件:

将JaCoCo Maven插件添加到我们的POM文件的插件部分。

  • 为单元测试配置代码覆盖率报告。
  • 配置代码覆盖率报告以进行集成测试。

下面将更详细地描述这些步骤。

将JaCoCo Maven插件添加到POM文件

通过将以下插件声明添加到其“ 插件”部分,我们可以将JaCoCo Maven插件添加到我们的POM文件中:


    org.jacoco
    jacoco-maven-plugin
    0.6.3.201306030806

配置单元测试的代码覆盖率报告

我们可以通过将两个执行添加到插件声明中来为单元测试配置代码覆盖率报告。这些执行方式如下所述:

  • 第一次执行将创建一个指向JaCoCo运行时代理的属性。确保执行数据已写入文件target / coverage-reports / jacoco-ut.exec。将该属性的名称设置为surefireArgLine。运行单元测试时,此属性的值作为VM参数传递。
  • 运行单元测试后,第二次执行将为单元测试创建代码覆盖率报告。确保从文件target / coverage-reports / jacoco-ut.exec中读取执行数据,并将代码覆盖率报告写入目录target / site / jacoco-ut中。

我们的插件配置的相关部分如下所示:


    org.jacoco
    jacoco-maven-plugin
    0.6.3.201306030806
    
        
        
            pre-unit-test
            
                prepare-agent
            
            
                
                ${project.build.directory}/coverage-reports/jacoco-ut.exec
                
                surefireArgLine
            
        
        
        
            post-unit-test
            test
            
                report
            
            
                
                ${project.build.directory}/coverage-reports/jacoco-ut.exec
                
                ${project.reporting.outputDirectory}/jacoco-ut
            
        
    

让我们找出如何为集成测试配置代码覆盖率报告。

配置集成测试的代码覆盖率报告

我们可以通过在插件声明中添加两个执行来为集成测试配置代码覆盖率报告。这些执行方式如下所述:

  • 第一次执行将创建一个指向JaCoCo运行时代理的属性。确保将执行数据写入文件target / coverage-reports / jacoco-it.exec。将该属性的名称设置为failsafeArgLine。运行我们的集成测试时,此属性的值作为VM参数传递。
  • 创建一个执行,该执行在集成测试运行后为集成测试创建代码覆盖率报告。确保从文件target / coverage-reports / jacoco-it.exec中读取执行数据,并将代码覆盖率报告写入目录target / site / jacoco-it。

我们的插件配置的相关部分如下所示:


    org.jacoco
    jacoco-maven-plugin
    0.6.3.201306030806
    
        
        
        
            pre-integration-test
            pre-integration-test
            
                prepare-agent
            
            
                
                ${project.build.directory}/coverage-reports/jacoco-it.exec
                
                failsafeArgLine
            
        
        
        
            post-integration-test
            post-integration-test
            
                report
            
            
                
                ${project.build.directory}/coverage-reports/jacoco-it.exec
                
                ${project.reporting.outputDirectory}/jacoco-it
            
        
    

现在,我们已经配置了JaCoCo Maven插件。下一步是配置Maven Surefire插件。让我们找出如何做到这一点。

配置Maven Surefire插件

我们使用Maven Surefire插件运行示例应用程序的单元测试。因为我们要为单元测试创​​建代码覆盖率报告,所以我们必须确保在运行单元测试时JaCoCo代理正在运行。我们可以通过添加的价值保证本surefireArgLine财产作为价值argLine配置参数。

Maven Surefire插件的配置如下所示(突出显示了所需的更改):


    org.apache.maven.plugins
    maven-surefire-plugin
    2.15
    
        
        ${surefireArgLine}
        
        ${skip.unit.tests}
        
        
            **/IT*.java
        
    

我们快完成了。剩下要做的就是配置Maven Failsafe插件。让我们找出如何做到这一点。

配置Maven故障安全插件

我们的示例应用程序的集成测试由Maven Failsafe插件运行。因为我们要为集成测试创建代码覆盖率报告,所以我们必须确保在运行集成测试时JaCoCo代理正在运行。我们可以通过将failsafeArgLine属性的值添加为argLine配置参数的值来实现。

Maven Failsafe插件的配置如下所示(突出显示了所需的更改):


    org.apache.maven.plugins
    maven-failsafe-plugin
    2.15
    
        
        
            integration-tests
            
                integration-test
                verify
            
            
                
                ${failsafeArgLine}
                
                ${skip.integration.tests}
            
        
    

创建代码覆盖率报告

现在,我们已成功完成所需的配置。让我们看看如何为单元测试和集成测试创建代码覆盖率报告。

此博客文章的示例应用程序具有三个构建配置文件,下面对此进行了描述:

  • 在开发配置文件开发过程中使用,这是我们构建的默认配置文件。当此配置文件处于活动状态时,仅运行单元测试。
  • 在集成测试配置文件用于运行集成测试。
  • 在所有的测试配置文件用于为运行单元测试和集成测试。

我们可以通过在命令提示符处运行以下命令来创建不同的代码覆盖率报告:

  • 命令mvn clean test运行单元测试,并为目录target / site / jacoco-ut创建单元测试的代码覆盖率报告。
  • 命令mvn clean verify -P integration-test运行集成测试,并为目录target / site / jacoco-it创建用于集成测试的代码覆盖率报告。
  • 命令mvn clean verify -P all-tests运行单元测试和集成测试,并为单元测试和集成测试创建代码覆盖率报告。

技术类文章精选

  • java一行代码打印心形
  • Linux性能监控软件netdata中文汉化版
  • 接口测试代码覆盖率(jacoco)方案分享
  • 性能测试框架
  • 如何在Linux命令行界面愉快进行性能测试
  • 图解HTTP脑图
  • 将swagger文档自动变成测试代码
  • 五行代码构建静态博客
  • 基于java的直线型接口测试框架初探
  • JUnit中用于Selenium测试的中实践

非技术文章精选

  • 为什么选择软件测试作为职业道路?
  • 写给所有人的编程思维
  • 成为优秀自动化测试工程师的7个步骤
  • 手动测试存在的重要原因
  • 成为自动化测试的7种技能
  • 自动化和手动测试,保持平衡!
  • 自动化测试生命周期
  • 如何在DevOps引入自动化测试

你可能感兴趣的:(java)