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