2011-03-05 52 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