圖 3. 生成的測試報告
該目錄中有一個 testng-failed.xml 文件,該文件可以被用來運(yùn)行前一次運(yùn)行失敗的所有測試用例。下文將會詳細(xì)介紹使用該文件的步驟。
重新運(yùn)行前次運(yùn)行失敗的測試用例
隨著項目開發(fā)的進(jìn)行,單元測試的數(shù)量也會成倍的增加。有時僅僅有數(shù)量很小的某幾個測試用例會運(yùn)行失敗。在這種情況之下,對于每一次修改,可能并不需要跑完所有的測試用例。只需要重新運(yùn)行前次運(yùn)行失敗的測試用例。TestNG 內(nèi)建了重新運(yùn)行上次失敗測試用例的功能,下文將會給出重新運(yùn)行前次錯誤測試用例的步驟。
運(yùn)行一組測試用例,如果這一組測試用例中有失敗的用例,TestNG 會在輸出目錄中創(chuàng)建一個叫做 testng-failed.xml 的配置文件。這個文件記錄了本組測試用例中運(yùn)行失敗的測試用例。使用該文件,用戶可以快速的重新運(yùn)行上次運(yùn)行失敗的測試用例。而無需運(yùn)行整個測試用例組。如前文所述,運(yùn)行完 Ant 腳本之后,會在腳本運(yùn)行的目錄之中生成一個 test-output 目錄。該目錄中,包含 testng-failed.xml 文件?梢杂萌缦碌拿钸\(yùn)行被標(biāo)記為運(yùn)行失敗的測試用例。
列表 3. 重新運(yùn)行前次運(yùn)行失敗的測試用例
C:>java -classpath
c:/spark/eclipse/plugins/org.testng.eclipse_4.7.0.0/lib/testng-jdk15.jar
org.testng.TestNG -d test-outputs test-output estng-failures.xml
運(yùn)行結(jié)果如下:
圖 4. 重新運(yùn)行前次運(yùn)行失敗的測試用例的輸出結(jié)果
分布式測試特性
隨著測試用例規(guī)模的擴(kuò)大,分組數(shù)量的增加。使用一臺主機(jī)來運(yùn)行所有的測試用例需要消耗大量的時間。為了解決這個問題,TestNG 提供了分布式特性。本文將介紹使用 TestNG 分布特征——使用多臺主機(jī)同時運(yùn)行測試用例。TestNG 提供的分布式模型如下所示:
圖 5. TestNG 提供的分布式模型
這是一個典型的 master/slave。在這個模型中,有一個負(fù)責(zé)調(diào)度的 master 節(jié)點(diǎn),和一些負(fù)責(zé)執(zhí)行任務(wù)的 slave 節(jié)點(diǎn)。下文將介紹如何配置這樣一個分布式模型。
首先,在遠(yuǎn)程機(jī)器上部署 slave 節(jié)點(diǎn)。如上圖所示,在遠(yuǎn)程節(jié)點(diǎn)上不僅要配置 TestNG 運(yùn)行環(huán)境,還需要復(fù)制測試用例文件。
圖 6. 將需要運(yùn)行的測試用例部署到遠(yuǎn)程機(jī)器上
然后在這臺遠(yuǎn)程機(jī)器上以 “slave” 模式啟動一個 TestNG 實(shí)例,使用如下命令:java – classpath <testng_path>;<testcase_path> org.testng.TestNG -slave <port>
圖 7. 以“slave”模式啟動一個 TestNG 實(shí)例
這樣,一個 TestNG 實(shí)例將會被啟動,并且等待即將到來的連接請求。如果有需要,可以在多臺機(jī)器上以 slave 模式啟動 TestNG 實(shí)例。
完成了所有 slave 實(shí)例的啟動之后,將所有啟動 slave 實(shí)例的主機(jī)信息記錄在一個配置文件中,如圖 8 所示:
圖 8. 分布式運(yùn)行的配置文件
然后使用該配置文件啟動 TestNG 的 master 實(shí)例。