使用Maven进行集成测试环境设置,不具有可嵌入的依赖性

时间:2011-03-05 18:57:30

标签: java testing maven integration

我想讨论当我们的产品部分不能嵌入JVM但必须在集成测试期间参与的场景。

场景:我正在使用Maven。我的应用使用以下工具
  A)主动MQ
  B)Cassandra DB
  C)CXF WebService。

集成测试的解决方案1:我很幸运,所有A B和C都可以嵌入。所以我可以在我的JVM中模拟A B C并使用它。这显然有效,但这不是我想讨论的内容。

解决方案2:使用与集成测试相关的Maven阶段来设置整个环境。所以步骤:
  1a)将A,B,C二进制包装到模块中,以便它可以在预集成测试阶段(类似于自制货物)拆开包装并准备这些产品或   1b)在预集成测试阶段从web和unpack等下载这些二进制文件(再次模拟货物项目)   2)在集成后测试中关闭所有内容。

如何使用Maven执行解决方案2?是否有任何插件可以帮助下载,解压缩(并记住不能在同一台机器上再次下载?)。如何启动和关闭ABC提供他们的位置已知?哪个Maven插件?我应该只使用antrun插件并创建脚本,从命令行启动ABC,然后以某种方式将它们拆除(我不知道如何通过杀死进程来做到这一点)?

1 个答案:

答案 0 :(得分:1)

货运团队提供了一些您可能会觉得有帮助的maven archetypes。特别注意Separate Functional Test Module Archetype,其中包括一个专门用于集成(功能)测试的模块,它完全符合您的描述:

  • 使用货物在pre-integration-tests阶段
  • 中将工件部署到应用容器
  • 工件可以是反应堆的一部分,也可以是正常依赖项
  • 执行集成测试
  • 集成后测试阶段用于拆除容器

希望这有帮助。