讀古今文學網 > Maven實戰 > 10.2 maven-surefire-plugin簡介 >

10.2 maven-surefire-plugin簡介

Maven本身並不是一個單元測試框架,Java世界中主流的單元測試框架為JUnit(http://www.junit.org/)和TestNG(http://testng.org/)。Maven所做的只是在構建執行到特定生命週期階段的時候,通過插件來執行JUnit或者TestNG的測試用例。這一插件就是maven-surefire-plugin,可以稱之為測試運行器(Test Runner),它能很好地兼容JUnit 3、JUnit 4以及TestNG。

可以回顧一下7.2.3節介紹的default生命週期,其中的test階段被定義為「使用單元測試框架運行測試」。我們知道,生命週期階段需要綁定到某個插件的目標才能完成真正的工作,test階段正是與maven-surefire-plugin的test目標相綁定了,這是一個內置的綁定,具體可參考7.4.1節。

在默認情況下,maven-surefire-plugin的test目標會自動執行測試源碼路徑(默認為src/test/java/)下所有符合一組命名模式的測試類。這組模式為:

·**/Test*.java:任何子目錄下所有命名以Test開頭的Java類。

·**/*Test.java:任何子目錄下所有命名以Test結尾的Java類。

·**/*TestCase.java:任何子目錄下所有命名以TestCase結尾的Java類。

只要將測試類按上述模式命名,Maven就能自動運行它們,用戶也就不再需要定義測試集合(TestSuite)來聚合測試用例(TestCase)。關於模式需要注意的是,以Tests結尾的測試類是不會得以自動執行的。

當然,如果有需要,可以自己定義要運行測試類的模式,這一點將在10.5節詳細描述。此外,maven-surefire-plugin還支持更高級的TestNG測試集合xml文件,這一點將在10.7節詳述。

當然,為了能夠運行測試,Maven需要在項目中引入測試框架的依賴,本書已經多次涉及了如何添加JUnit測試範圍依賴,這裡不再贅述,而關於如何引入TestNG依賴,可參看10.7節。