maven的重要職責之一就是自動運行單元測試,它通過maven-surefire-plugin與主流的單元測試框架junit和testng集成,並且能夠自動生成豐富的結果報表。
maven並不是一個單元測試框架,他只是在構建執行打特定的生命周期階段的時候,通過插件來執行JUnit或testNG的測試用例,這個插件就是maven-surefire-plugin,也叫做測試運行器。maven-surefire-plugin會自動執行測試源碼路勁下(src/test/java)的所有符合以下命名模式的測試用例
**/Test*.java:任何子目錄下的所有命名以Test開頭的java類
**/**Test.java:任何子目錄下的所有命名以Test結尾的java類
**/**TestCase.java:任何子目錄下的所有命名以TestCase結尾的java類
只要將測試類按上述模式命名,maven就能自動運行它們,用戶也就不再需要定義測試集合(testsuite)來聚合測試用例了。
當然也可以自定義來包含一些不符合上述命名規則的測試類,以下定義以Tests結尾的用例:
|
1
2
3
4
5
6
7
8
9
10
|
<plugin>
<groupId>org.apache.maven.plugin</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.5<version>
<configuration>
<includes>
<include>**/*Tests.java</include>
</includes>
</configuration>
</plugin>
|
日常工作中,軟件開發人員總有很多理由來跳過單元測試,“我敢保證這次改動不會導致任何測試失敗,測試運行太耗時了,暫時跳過一,有持續集成服務跑所有測試呢,我本地就不執行啦。在大部分情況下,這想法都是不對的。任何改動都要交給測試去驗證,測試運行耗時過長應該考慮優化測試,更不要完全依賴持續集成服務來報告錯誤,測試錯誤應該盡早在盡小范圍內發現,並及時修復。
maven同時也可以通過設置skipTest來跳過測試。
測試報告:
surefire會在target-report下生成兩種格式的錯誤與報告,簡單文本格式和支持JUnit的XML格式。
測試覆蓋率報告:
cobertura是一個開源的測試覆蓋率統計工具,使用時添加插件cobertura-maven-plugin
testng:
可以使用testing.xml的文件,來配置想要運行的測試集合。然后再pom文件里在配置使用該文件。
