列表 4. 啟動 TestNG 的 master 實例
java – classpath
c:sparkeclipsepluginsorg.testng.eclipse_4.7.0.0lib estng-jdk15.jar;.
org.testng.TestNG -hostfile hosts.properties test-output estng-failed.xml
這樣,所有的測試用例,將會被隨機(jī)的分配到多個 slave 實例上運行。圖 9 給出了在一個 slave 節(jié)點上運行測試用例的結(jié)果。
圖 9. 分布式運行的 TestNG 測試用例結(jié)果
TestNG 的多線程支持
測試用例分組中,針對網(wǎng)絡(luò)應(yīng)用的測試用例往往需要在多線程環(huán)境下運行。TestNG 為多線程運行某個測試用例提供了方便的內(nèi)建支持。這可以通過在測試用例的方法前制定 annotation @Test 的屬性來完成。
列表 5. 設(shè)置多線程屬性運行測試用例
@Test(threadPoolSize = 3, invocationCount = 5, timeOut = 1000, groups = { "multiple" })
public void multipleTest() {
System.out.println("Slow test");
}
這個屬性表示,運行 multipleTest 方法總共 5 次,在 3 個線程中運行這五次調(diào)用。每個線程運行該方法的時間不超過 1000 毫秒。修改 build.xml 文件,運行 multiple 組。
列表 6. 修改 build.xml 文件,運行 multiple 組。
<target name="test">
<testng classpathref="cp" groups="multiple">
<classfileset dir="./" includes="example1/*.class"/>
</testng>
</target>
圖 10. 多線程運行測試用例 multipleTest 的結(jié)果
總結(jié)
本文希望通過場景和 TestNG 新特性的結(jié)合,可以為用戶管理規(guī)模龐大的測試用例集有所幫助。場景中提到的分類方法,對實際項目中測試用例的管理具有幫助意義。其中,重跑失敗的測試用例,分組運行,分布式運行,和多線程運行也是對于管理測試用例非常有幫助的特征。