【发布时间】:2016-02-25 16:58:23
【问题描述】:
在Maven 构建的验证阶段,对多个Spring 引导应用程序运行端到端集成测试的推荐方法是什么?
基本上,我有一个多模块 Maven 项目,其中几个模块是独立的 Spring Boot 应用程序。这些独立的应用程序有自己的数据源配置、与JMS 队列的集成流等。例如,应用程序 A 将轮询数据库中的事件,当发生事件时,它会生成一个 JSON 数据文件并放入JMS 队列上的消息。应用程序 B 正在轮询 JMS 队列,因此获取消息,读取文件,使用另一个数据库进行一些处理,然后将消息放在不同的队列中。然后应用程序 C 将接收该消息等。
我已经为各个应用程序设置了集成测试;这些在 Maven 故障安全插件下运行。但是,我想在 Maven 下对整个系统进行端到端的集成测试。我在项目中设置了一个单独的模块专门用于此任务,因此希望此模块的验证构建阶段使用其他依赖模块进行端到端测试。
有没有这样做的最佳实践方法?我看到了 3 种可能的方式:
- 将每个应用程序的配置加载到相同的应用程序上下文中。但是,由于有多个数据源等,这会产生冲突,因此这些数据源都必须手动配置才能启用端到端集成测试 - 所以这对我来说似乎是错误的。
- 将每个应用程序作为一个单独的进程启动 - 那么如何正确跟踪它们并确保它们在测试模块构建停止/崩溃/等时关闭?
- 有没有办法在同一进程中轻松加载单独的 Spring Boot 应用程序,每个应用程序都有自己的配置上下文?这似乎是最明智的选择。关于
Mavenbuild/failsafe 插件是否有任何注意事项?
【问题讨论】:
-
process-exec-maven-plugin 可能是执行多个 spring-boot 应用程序集成测试的好选择:您可以考虑我的测试解决方案 stackoverflow.com/a/37397777/2745810
标签: maven spring-boot integration-testing multi-module end-to-end