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用戶,我們可以從那裏獲取。 –