簡體   English   中英

使用maven-failsafe-plugin時,應該在哪里存儲集成測試?

[英]Where should the integration tests be stored when using the maven-failsafe-plugin?

我是否必須在src/test使用其余的單元測試進行集成測試,並通過*Integr*Test*ITTest類的模式區分它們,或者它們是否在src/it (就像當時的情況一樣)開發Maven插件並使用maven-invoker-plugin )?

我問這個是因為,對我來說,如果單元和集成測試都在同一個地方,它看起來不夠干凈(即使它們是通過Maven配置文件控制的)。

你是對的, src/it旨在用於插件的集成測試。 這在標准目錄布局中提到。

默認情況下, maven-failsafe-plugin將在${project.build.testSourceDirectory}查找集成測試, 這與單元測試的maven-surefire-plugin 相同 默認情況下,這對應於src/test/java 遵循命名約定使集成測試不同:

<includes>
  <include>**/IT*.java</include>
  <include>**/*IT.java</include>
  <include>**/*ITCase.java</include>
</includes>

這與單元測試的命名約定不同:

<includes>
  <include>**/Test*.java</include>
  <include>**/*Test.java</include>
  <include>**/*TestCase.java</include>
</includes>

因此,雖然它們將駐留在相同的源文件夾( src/test/java )中,但名稱的不同明顯區分了它們。 此外,這是默認設置,因此不需要額外的配置。

也就是說,你可以有其他選擇:

  • 將集成測試放在不同的源文件夾中。 這將需要一些配置才能使其工作:您需要使用build-helper-maven-plugin:add-test-source目標將自定義文件夾添加為測試源文件夾。
  • 使用另一個模塊(如果您有一個多模塊Maven項目)只包含集成測試。

默認情況下,第一個maven-failed-plugin在另一個生命周期階段(集成測試)中運行,如maven-surefire-plugin(test)所做的那樣。 此外,如果您想檢查集成測試是否失敗,您可以配置maven-failsafe-plugin以在post-integration-test測試階段運行verify目標。 這可以自由配置。

有一個問題進入我的腦海。 你有10個模塊,現在你想進行集成測試? 它們屬於哪個模塊? 最好的是擁有一個單獨的模塊,因為它們不屬於10個模塊。

除了maven-surefire-plugin已經在默認生命周期中配置。 是的,補充目標是一個想法,但它會混淆用戶在不同的關系中使用相同的插件。 因此,關注點的分離在這里很重要。 除了整個默認配置......這些插件共享更大的代碼庫,但存在差異......

Tunaki已經提到的還有pre-integration-test ,用於設置服務器等integration-test以及在post-integration-test階段關閉服務/服務器之類的事情。 這在單元測試中永遠不會發生。

使用單獨的模塊使得設置IT通常更簡單,這意味着具有與單元測試不同的依賴關系(類路徑)。 例如像Arquillian.org這樣的東西,它從未在單元測試中使用過。 這不能在一個單獨的模塊中處理......這也是一個好事,這里是關注點的分離。

此外,默認情況下集成測試不能平行,而單元測試可以按定義,否則它們不是單元測試。

那么文件夾布局怎么樣? 在集成測試模塊中,您可以簡單地使用src/test/java文件夾,這意味着您不需要補充配置等(例如通過build-helper-maven-plugin等),這使得它更容易並遵循更多約定過度配置范式。

不要忘記你可以更好地控制你的構建(CI)中正在運行的東西..

另一個重要提示。 通常,集成測試通常與基礎架構相關,因此有時可以忽略那些可以通過使用maven-failsafe-plugin的check目標來簡單處理的故障....

可以在此處找到IT模塊的示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM