关于springboot:Multi-Module-Spring-Boot集成测试使用JaCoCo生成测试覆盖率

41次阅读

共计 2348 个字符,预计需要花费 6 分钟才能阅读完成。

个别的 SpringBoot 我的项目会由多 Module 组成,每个 Module 为不同的功能模块。我的项目启动时,多个 Module 提供不同的服务,独特反对了本我的项目所提供的服务。若采纳启动 SpringBoot 的形式进行多 Module 集成测试,个别 test case 会放在 SpringApplication 类所在的 Module 中,该 Module 个别仅提供了服务的入口,并无太多理论业务性能「简略来说,业务代码都不在这个 Module 中」。本文探讨运行集成测试,对多 Module 测试覆盖率合并统计的办法。

我的项目构造

本文所述的我的项目具备如下构造:

- pom.xml

- subModule 1
- - pom.xml

- subModule 2
- - pom.xml

Root pom.xml 治理我的项目公共 Maven 配置,subModule 1 为利用入口,SpringApplication 类也在其中,SpringBoot 也在此 Module 中启动;subModule 2 为业务功能模块,提供 Service 服务。

抉择 JaCoCo

个别测试覆盖率统计工具,独自在 Module 内执行 test case,并别离为每个 Module 创立覆盖率报告,没有跨 Module 覆盖率的内置反对,也没有多个 Module 的合并报告。依据这篇文章 Java 覆盖率工具 jacoco,Cobertura 可知,JaCoCo 有很多劣势,根本成为了目前惟一可用的工具,依据 JaCoCo 官网文档 MavenMultiModule 所述,JaCoCo 0.7.7 版实现了新的 Maven Goal jacoco:report-aggregate。所以本文就基于以上材料,钻研并生成 Maven 多 Module 覆盖率汇总文档。

应用 JaCoCo 生成测试覆盖率文档

因为官网只是强调实现了该性能,并未给出最佳实际,再次通过搜寻材料,发现了这篇 StackOverflow 回复给出了最佳实际,按其中的批示操作即可:

  1. 在根 pom.xml 中增加 jacoco-maven-plugin:
<?xml version="1.0" encoding="UTF-8"?>
<project>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <version>0.8.4</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <build>
        <plugins>
            <plugin>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <version>0.8.4</version>
                <executions>
                    <execution>
                        <id>prepare-agent</id>
                        <goals>
                            <goal>prepare-agent</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>
  1. 在启动 SpringBoot 的子 Module 中,增加如下构建配置即可,不要忘了应用 maven-surefire-plugin 插件对 test case 进行治理。
<project>
    <dependencies>
        <dependency>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <version>0.8.4</version>
                <executions>
                    <execution>
                        <id>report-aggregate</id>
                        <phase>verify</phase>
                        <goals>
                            <goal>report-aggregate</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>
  1. 配置好后,只须要在利用根目录下「Root pom.xml 所在的目录下」,执行 Maven 指令 mvn verify,之后在 SpringBoot 子 Module 中,关上target/site/jacoco-aggregate/index.html,即可在浏览器中查看具体的测试覆盖率报告了。覆盖率报告示例如下:

参考资料

  1. Maven 中测试插件 (surefire) 的相干配置及罕用办法
  2. Creating Multi-project Builds
  3. java – Reporting and Merging multi-module jacoco reports with report-aggregate – Stack Overflow
  4. MavenMultiModule · jacoco/jacoco Wiki · GitHub
  5. Java 覆盖率工具 jacoco,Cobertura_zzhongcy 的专栏 -CSDN 博客_cobertura 端口占用

正文完
 0