2017-08-12 113 views
0

我目前正在寫的集成測試2個模塊之間多模塊測試:取決於彼此

  • 模塊A - 含有可經由行家插件
  • 模塊B被dockerized REST服務 - 包含集成測試這取決於模塊A碼頭啓動和運行

因此,我使用了包含預集成測試階段和集成後測試的故障安全插件。

在預集成測試中,我啓動了docker,在所有子模塊的所有集成測試完成後,我想殺死這些docker。

在我使用(fabric8)也有2個階段,我在上述階段哪個區域泊塢窗使用泊塢窗插件:啓動和泊塢窗:停止

當我運行整個項目出現問題,碼頭工人在模塊A模塊B測試運行之前殺死,所以我想,如果我可以告訴持有他們像父模塊:

  • 啓動模塊B泊塢窗:啓動插件的
  • 運行集成測試所有項目
  • 啓動模塊B泊塢窗:停止插件

這將真正解決我的問題,而是有沒有辦法來調用父模塊的子模塊的階段,甚至崇敬,子模塊相從子模塊連接到父模塊相

+0

解決方案是在一個單獨的模塊內完成整個集成測試,您的情況是模塊B包含所有的配置。是定義一個依賴到模塊A,以確保在運行集成測試之前建立了模塊A ...也許你可以使用一個配置文件讓運行集成測試,只有當你真的喜歡或者像Jenkins這樣的CI環境。最後,沒有選擇/可能性從父級調用階段等。 – khmarbaise

回答

0

據我所知,Maven沒有能力暫停模塊的構建,直到滿足另一個模塊中的條件;在構建另一個子模塊之前,Maven完全運行子模塊的構建。

但是,可以使Module B取決於Module A(甚至依賴於一組從它的測試類的),這樣的話你就可以開始你的REST服務的Module B構建中,爲您的集成測試的一部分。

0

據我瞭解你的設置,建築物Module A與啓動/停止容器無關;因此,Module A不應該這樣做。

取而代之,容器應分別在Module Bpre-integration-testpost-integration-test階段中啓動和停止。畢竟,Module Bintegration-test階段需要一個正在運行的容器,而不是Module A

如果你不習慣Maven的(自以爲是的)做事方式,這可能看起來沒有必要的限制,但Maven只是強迫你做正確的事情。想想這樣:如果將來,另一個Module C也需要正在運行的碼頭集裝箱,例如,要運行一些其他測試,您不希望再循環一個碼頭集裝箱(由Module A開始)。由於這種風險Module BModule C以有趣的方式進行交互,每個模塊都應該有自己的碼頭容器來處理。

+0

每個模塊都有它的docker設置,但是發生了什麼?您需要模塊A需要模塊B嗎?您需要dockerize模塊B,但安裝程序位於它的pom.xml文件中。 – TalOhana