私は私が最初にブラウザのクラスを定義し、ウェブサイト上で機能テストを実行します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クラスの複数のインスタンスを作成します。それぞれのインスタンスは、BrowserTestの最初のインスタンスを含む同じスイート内でTestNGが実行する別のブラウザで初期化されます。
新しいクラスインスタンスごとに新しいスイートを作成することが可能かどうか、またTestNGがスイートレベルでオブジェクトを操作するトップレベルのメカニズムを提供しているかどうかを知りたい(アフリカの@Factoryメソッドのみが動作するクラスレベルで) - 新しいスイートインスタンスをプログラムで作成して、それぞれ別のブラウザを使用するように初期化することができます。
ありがとうCedric。また、ISuiteListenerリスナーに渡されたISuiteインターフェイスを使用してスイートを変更しようとしましたが、役に立たなかったのです。 TestNGにいくつかの機能を組み込んで、testng.xml XMLファイル自体にいくつかのパラメータを持つスイートを繰り返すのを楽しみにしています。 – antorsae
リスナーに渡されるオブジェクトは、正しく動作するようになっていますが、リスナーに渡されるオブジェクトは読み取り専用です。あなたの提案をtestng-usersに電子メールで送ってもらえれば、そこから取得することができます。 –