maven - Maven下多个spring boot应用的端到端集成测试

标签 maven spring-boot integration-testing multi-module end-to-end

为多个 Spring 运行端到端集成测试的推荐方法是什么?启动 Maven 中的应用程序构建的验证阶段?

基本上,我有一个多模块 Maven 项目,其中几个模块是单独的 Spring Boot 应用程序。这些单独的应用程序有自己的数据源配置,与 JMS 的集成流队列等。例如,应用程序 A 将轮询数据库中的事件,当该事件发生时,它会生成 JSON数据文件并将消息放在 JMS 上队列。应用程序 B 正在轮询 JMS队列,因此获取消息,读取文件,使用另一个数据库进行一些处理,然后将消息放在不同的队列中。然后应用程序 C 将获取该消息等。

我已经为各个应用程序设置了集成测试;这些在 Maven 故障安全插件下运行。但是,我想在 Maven 下对整个系统进行端到端的集成测试。我在项目中设置了一个单独的模块专门用于此任务,因此希望此模块的验证构建阶段使用其他依赖模块进行端到端测试。

有没有这样做的最佳实践方法?我看到了 3 种可能的方式:

  • 将每个应用程序的配置加载到相同的应用程序上下文中。但是,由于多个数据源等,这会产生冲突,因此这些数据源都必须手动配置才能启用端到端集成测试 - 所以这对我来说似乎是错误的。
  • 将每个应用程序作为一个单独的进程启动 - 那么如何正确跟踪它们并确保它们在测试模块构建停止/崩溃/等时被关闭?
  • 有没有办法在同一个过程中轻松加载单独的 Spring Boot 应用程序,每个应用程序都有自己的配置上下文?这似乎是最明智的选择。关于 Maven 是否有任何考虑?构建/故障保护插件?
  • 最佳答案

    只是跟进并说出我最终做了什么(继续运作良好):

  • 我在我的测试模块中创建了以下 Maven 配置文件:“default”默认跳过测试(我们使用 jgitflow 插件,因此只希望在明确请求时运行端到端测试),“standalone-e2e”用于端到端-end 测试不需要外部资源,例如数据库(针对想要进行完整端到端测试的开发人员),以及使用真实数据库等进行端到端测试的“集成 e2e”(可以触发为CI 的一部分)。 Spring 配置文件(由相应的 Maven 配置文件激活)控制各个组件的配置。
  • 对于standalone-e2e,相关插件如activemq-maven-plugin , hsqldb-maven-plugin等启动(然后关闭)资源作为端到端测试的一部分,在 build-helper-maven-plugin 保留的端口上运行. process-exec-maven-plugin用于在预集成测试阶段启动所有要测试的组件(作为标准 Spring Boot 应用程序),并在集成测试后阶段自动关闭它们。 Spring 配置和特定的 Maven 测试依赖关系负责其他资源,例如 a fake FTP server .在所有资源和组件运行之后,测试代码本身会根据需要填充数据库和文件系统,并使用 JMS 触发流(并等待相应的回复等)。
  • 集成 e2e 配置文件几乎相同,但使用关联 Spring 属性中配置的“真实”外部资源(在我们的例子中,Amazon SQS 队列、MySQL 数据库等)。
  • 测试所需和生成的所有文件(例如数据文件、HSQLDB 文件、日志文件等)都在“目标”构建目录下创建,因此可以轻松检查该区域以查看测试期间发生的情况,并且还允许“mvn clean”清除一切。

  • 我希望这很有用——发现无论我需要做什么,都有一个 Maven 插件来处理它,这确实令人耳目一新!

    关于maven - Maven下多个spring boot应用的端到端集成测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33873548/

    相关文章:

    java - @DataJpaTest : how to stop loading unneeded @ConfigurationProperties

    spring-boot - Docker的环境变量未传递给Spring

    java - 如何配置pom.xml文件-spring和hibernate

    java - 错误 :Execution failed for task ':app:dexDebug'

    maven - 在 Maven react 器构建中包含父项目

    angular - 如何使从 azure 广告收到的 Jwt token 无效

    docker - 如何调试在 docker 容器中运行的 maven surefire 测试?

    java - WCF 互操作性测试

    ruby-on-rails - rspec save_and_open_page 确实创建了一个 html 转储

    maven - 2 POM 中定义的 exec-maven-plugin - 不工作