0
我有TestNG的注释的类,它经营的网站上的功能测试,我首先定义了浏览器类 - 简单的POJO:我可以在TestNG的@Factory中创建一个新套件吗?
class Browser {
private String browserName;
private String browserVersion;
private String platform;
...getters and setters and constructor...
}
现在TestNG的注释类本身:
class BrowserTest {
public BrowserTest(Browser b) {
...
create browser session, etc. (uses Selenium Grid underneath)
...
}
@Test
public void login() {
...test login...
}
@Test
public void logout() {
...test logout...
}
@Factory
public Object[] create() throws Exception {
List<Object> testList = new ArrayList<Object>();
Browser[] browsers = {
new Browser("google-chrome", "", ""),
new Browser("firefox", "", ""),
new Browser("internet-explorer", "9", ""),
};
//Create new instance of this class for each browser
for (Browser b: browsers) {
testList.add(new BrowserTest(b));
}
return testList.toArray();
}
}
的上面的@Factory方法运行良好,我创建了BrowserTest类的多个实例,每个实例都使用不同的浏览器进行初始化,TestNG将在包含第一个BrowserTest实例的同一个套件中运行。
我想知道是否有可能为每个新类实例创建一个新的套件,或者如果TestNG提供了一个顶级机制来在套件级别操作对象(afaik @Factory方法只能工作在类级别) - 所以我可以编程创建新的套件实例,每个实例初始化为使用不同的浏览器。
谢谢塞德里克。我也尝试通过在ISuiteListener侦听器上传递的ISuite接口来修改套件无济于事。如果您决定在TestNG中包含一些功能来在testng.xml XML文件本身中迭代一个包含许多参数的套件,那么展望未来。 – antorsae
正确的,传递给侦听器的对象应该是只读的,尽管对它们的一些修改恰好可以工作。随意通过电子邮件将您的建议发送给testng用户,我们可以从那里获取。 –