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