如何对maven中的所有模块进行集成测试?

How to do integration test with all the module in maven?

例如,我有一个包含 2 个模块的 maven 项目。一个REST服务模块,一个hornetq jms模块。

手动方式为:

  1. 运行 嵌入式码头服务器应用程序
  2. 运行 嵌入式 hornetq 服务器
  3. 向REST服务器发送PUT请求(REST服务器作为hornetq生产者将请求消息推送到hornetq队列)
  4. 启动一个 hornetq 消费者来接收排队的消息

如何使用 maven 与他们进行集成测试?

答案是 maven-failsafe-plugin(参见文档 http://maven.apache.org/surefire/maven-failsafe-plugin/usage.html)。它可以让你

  1. pre-integration-test 阶段启动应用程序(例如,jetty 或 hornetq)
  2. integration-test 阶段执行测试
  3. post-integration-test 阶段停止应用程序
  4. 评估 verify 阶段的测试结果(例如,构建失败,生成 JUnit 报告)

查看提供的示例 link。

在您的特定情况下,您将在 pre-integration-test 阶段启动所有服务器(通过使用 hornetq-maven-pluginjetty-maven-plugin 以及可能的 maven-antrun-plugin),然后停止它们在 post-integration-test 阶段。
我建议使用 JUnit 或 TestNG 框架从 Java 执行 PUT 请求,因为它与 maven-failsafe-plugin 完美集成。如果可能,以编程方式启动(和停止)hornetq 消费者作为 JUnit/TestNG 测试的一部分,因为在那里你会 assert 结果。

一些其他资源: