是否可以同时在多个spring boot应用程序上运行集成测试?

是否可以同时在多个spring boot应用程序上运行集成测试?,spring,gradle,spring-boot,integration-testing,Spring,Gradle,Spring Boot,Integration Testing,我有一个gradle项目,有3个使用spring boot的模块。 这3个spring引导应用程序并行运行,并相互交互 例如,模块1将数据保存在模块2中,模块3通过Rest API从模块2中检索数据 我想对这3个spring boot应用程序之间的交互进行集成测试(即,让它们分别在不同的端口上运行)。可能吗?怎么做 我知道我们可以为一个单一的spring启动应用程序实现这一点。()你考虑过使用Docker吗?和你一样,我在尝试这样做时遇到了问题,我目前的解决方案是使用docker compose

我有一个gradle项目,有3个使用spring boot的模块。 这3个spring引导应用程序并行运行,并相互交互

例如,模块1将数据保存在模块2中,模块3通过Rest API从模块2中检索数据

我想对这3个spring boot应用程序之间的交互进行集成测试(即,让它们分别在不同的端口上运行)。可能吗?怎么做


我知道我们可以为一个单一的spring启动应用程序实现这一点。()

你考虑过使用Docker吗?和你一样,我在尝试这样做时遇到了问题,我目前的解决方案是使用docker compose为每个应用程序建立一个容器。我在一个简单的容器中运行每个spring boot应用程序(示例):

然后我使用docker compose将所有内容组合在一起:

version: '3'
services:
  module1:
    build: ./path/to/module1/Dockerfile
    ports:
     - "8080:8080"
    links:
     - module2
  module2:
    build: ./path/to/module2/Dockerfile
    ports:
     - "8081:8081"

请注意,我还没有测试过任何配置,因为我现在不在开发人员的机器上,我已经将配置简化为我认为最简单的配置。

我尝试过做类似的事情,但无法做到。我尝试使用SpringBootMaven插件启动一个启动应用程序,然后在集成测试阶段从另一个模块运行测试。但是启动应用程序并没有在单独的线程中运行,所以构建过程就被卡住了。我再次尝试了maven exec插件,但遇到了同样的问题。不确定gradle中是否有任何内容。您不能使用
JavaExec
Exec
任务,因为它们总是等待进程完成。您需要的是使用<代码> PrimeBuffer-< /C> >的自定义任务。处理Excel Maven插件可能是执行多个Spring启动应用程序的集成测试的一个好选择:您可以考虑我的测试解决方案。
version: '3'
services:
  module1:
    build: ./path/to/module1/Dockerfile
    ports:
     - "8080:8080"
    links:
     - module2
  module2:
    build: ./path/to/module2/Dockerfile
    ports:
     - "8081:8081"