讀古今文學網 > Maven實戰 > 10.7 運行TestNG測試 >

10.7 運行TestNG測試

TestNG是Java社區中除JUnit之外另一個流行的單元測試框架。NG是Next Generation的縮寫,譯為「下一代」。TestNG在JUnit的基礎上增加了很多特性,讀者可以訪問其站點http://testng.org/獲取更多信息。值得一提的是,《Next Generation Java Testing》(Java測試新技術,中文版已由機械工業出版社引進出版,書號為978-7-111-24550-6)一書專門介紹TestNG和相關測試技巧。

使用Maven運行TestNG十分方便。以10.1.3節中的account-captcha測試代碼為例,首先需要刪除POM中的JUnit依賴,加入TestNG依賴,見代碼清單10-16。

代碼清單10-16 加入TestNG依賴

與JUnit類似,TestNG的依賴範圍應為test。此外,TestNG使用classifier jdk15和jdk14為不同的Java平台提供支持。

下一步需要將對JUnit的類庫引用更改成對TestNG的類庫引用。表10-1給出了常用類庫的對應關係。

表10-1 JUnit和TestNG的常用類庫對應關係

將JUnit的類庫引用改成TestNG之後,在命令行輸入mvn test,Maven就會自動運行那些符合命名模式的測試類。這一點與運行JUnit測試沒有區別。

TestNG允許用戶使用一個名為testng.xml的文件來配置想要運行的測試集合。例如,可以在account-captcha的項目根目錄下創建一個testng.xml文件,配置只運行RandomGeneratorTest,如代碼清單10-17所示。

代碼清單10-17 TestNG的testng.xml

同時再配置maven-surefire-plugin使用該testng.xml,如代碼清單10-18所示。

代碼清單10-18 配置maven-surefire-plugin使用testng.xml

TestNG較JUnit的一大優勢在於它支持測試組的概念,如下的註解會將測試方法加入到兩個測試組util和medium中:

由於用戶可以自由地標注方法所屬的測試組,因此這種機制能讓用戶在方法級別對測試進行歸類。這一點JUnit無法做到,它只能實現類級別的測試歸類。

Maven用戶可以使用代碼清單10-19所示的配置運行一個或者多個TestNG測試組。

代碼清單10-19 配置maven-surefire-plugin運行TestNG測試組

由於篇幅所限,這裡不再介紹更多TestNG的測試技術,感興趣的讀者請訪問TestNG站點。