在TestNG的一个测试suite中,在一个<test>标签中可以包含多个测试类,那么这些测试类之间如何共享动态中间数据呢?
比如在一个测试类Producer中,一个测试方法产生了中间数据groupIds;而在后续测试的另一个测试类Consumer中,一个测试方法要访问这个中间数据。测试套件如下:
...
<test>
<classes>
<class name= "Producer"/>
<class name= "Consumer"/>
</classes>
</test>
...
在TestNG的API中,有一个大家耳熟能详的ITestContext接口。一个ITestContext对象就代表一个<test>标签内的上下文。因而在一个<test>中的多个测试类之间共享动态数据,可以使用ITestContext。
生产数据的测试类Producer:
...
public static final String SERVER_GROUPS = "SERVER_GROUPS";
public List<String> groupIds;//set in one test method
@AfterClass(alwaysRun = true)
public void reserveGroupIds(ITestContext ctx) {
ctx.setAttribute(SERVER_GROUPS, groupIds);
}
...
消费数据的测试类Consumer:
...