在多模块Maven项目中构建所有模块后,如何运行集成测试?

我正在研究一个大型的多模块Maven项目.每个模块都有快速单元测试(使用Surefire插件),许多模块都有慢速集成测试(使用Failsafe插件).

我想通过在构建所有模块并进行单元测试后运行所有模块的集成测试来加快“简单”构建失败(编译错误和单元测试失败)的反馈.

你能提出一个实现这个目标的好方法吗?

最佳答案

running integration tests from all modules after all modules have been built and unit-tested

为了满足此要求,可能的解决方案是使用附加(可选)模块提供集成测试,即,应将所有集成测试移至此模块,该模块可通过配置文件添加到默认构建中.

<profiles>
   <profile>
      <id>it</id>
      <modules>
        ...
        <module>it-module</module>
      </modules>
   </profile>
</profiles>

为了使它成为Maven Reactor构建的最后一步,该模块还应该依赖于所有其他模块(可能它已经隐含地已经是这种情况).

该模块实际上是唯一一个提供maven-failsafe-plugin配置和设置的模块.此外,在使用嵌入式服务器进行测试(即Jetty)的情况下,它可能会变得更有意义:服务器将仅在构建此模块期间创建和关闭,而不是在需要它的每个模块中创建和关闭,加速这个整合阶段.

作为构建的最后一个模块,您将确保仅在以前模块上没有单元测试失败的情况下才会到达它,并且只有当它的配置文件处于活动状态时才会到达(例如在CI构建期间).

点赞