2011-03-05 26 views
1

我想讨论的情况下,当我们的产品的一部分不能嵌入JVM,但必须参与集成测试。集成测试环境设置与Maven的不可嵌入的依赖

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

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

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

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

回答

1

货运团队提供了一些maven archetypes,您可能会发现有帮助。看看尤其是在Separate Functional Test Module Archetype,其中包括一个专门为集成(功能)的测试模块,它不正是你的描述:

  • 使用的货物在pre-integration-tests阶段
  • 文物可以部署文物,一个应用程序容器是你的反应器或正常依赖性
  • 集成测试被执行
  • 一体化后的测试阶段的任一部分被用于拆除容器

希望这会有所帮助。

+0

事情是我不想使用任何容器。我只想启动A B C,这些是独立应用程序 –

+0

好的,我误解了你。然后,您可能想要使用exec或antrun插件,如下所示:http://stackoverflow.com/questions/175621/starting-external-process-during-integration-testing-in-maven – skuro

+0

作为一种启动策略/关闭应用程序,我会创建一些'sh'脚本来存储/读取可预测位置文件中的子进程的PID。 – skuro