讀古今文學網 > Maven實戰 > 10.3 跳過測試 >

10.3 跳過測試

  日常工作中,軟件開發人員總有很多理由來跳過單元測試,「我敢保證這次改動不會導致任何測試失敗」,「測試運行太耗時了,暫時跳過一下」,「有持續集成服務跑所有測試呢,我本地就不執行啦」。在大部分情況下,這些想法都是不對的,任何改動都要交給測試去驗證,測試運行耗時過長應該考慮優化測試,更不要完全依賴持續集成服務來報告錯誤,測試錯誤應該盡早在盡小範圍內發現,並及時修復。

不管怎樣,我們總會要求Maven跳過測試,這很簡單,在命令行加入參數skipTests就可以了。例如:

Maven輸出會告訴你它跳過了測試:

當然,也可以在POM中配置maven-surefire-plugin插件來提供該屬性,如代碼清單10-12所示。但這是不推薦的做法,如果配置POM讓項目長時間地跳過測試,則還要測試代碼做什麼呢?

代碼清單10-12 配置插件跳過測試運行

有時候用戶不僅僅想跳過測試運行,還想臨時性地跳過測試代碼的編譯,Maven也允許你這麼做,但記住這是不推薦的:

這時Maven的輸出如下:

參數maven.test.skip同時控制了maven-compiler-plugin和maven-surefire-plugin兩個插件的行為,測試代碼編譯跳過了,測試運行也跳過了。

對應於命令行參數maven.test.skip的POM配置如代碼清單10-13所示,但這種方法也是不推薦使用的。

代碼清單10-13 配置插件跳過測試編譯和運行

實際上maven-compiler-plugin的testCompile目標和maven-surefire-plugin的test目標都提供了一個參數skip用來跳過測試編譯和測試運行,而這個參數對應的命令行表達式為maven.test.skip。