列表 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
这样,所有的测试用例,将会被随机的分配到多个 slave 实例上运行。图 9 给出了在一个 slave 节点上运行测试用例的结果。
图 9. 分布式运行的 TestNG 测试用例结果
TestNG 的多线程支持
测试用例分组中,针对网络应用的测试用例往往需要在多线程环境下运行。TestNG 为多线程运行某个测试用例提供了方便的内建支持。这可以通过在测试用例的方法前制定 annotation @Test 的属性来完成。
列表 5. 设置多线程属性运行测试用例
@Test(threadPoolSize = 3, invocationCount = 5, timeOut = 1000, groups = { "multiple" })
public void multipleTest() {
System.out.println("Slow test");
}
这个属性表示,运行 multipleTest 方法总共 5 次,在 3 个线程中运行这五次调用。每个线程运行该方法的时间不超过 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 的结果
总结
本文希望通过场景和 TestNG 新特性的结合,可以为用户管理规模庞大的测试用例集有所帮助。场景中提到的分类方法,对实际项目中测试用例的管理具有帮助意义。其中,重跑失败的测试用例,分组运行,分布式运行,和多线程运行也是对于管理测试用例非常有帮助的特征。