@Factory で TestNG を初めて使用しようとしていますが、うまくいきません。理由を説明します。
「サイトの起動」、「ログイン」、「ユーザーが自分のダッシュボードにいるかどうかを確認する」などのいくつかのテストがあるExtendというクラスがあり、工場から渡されたすべてのデータに対してこれらの順序が必要でしたテストは常に同じ "起動サイト">>"ログイン">>"ユーザーがダッシュボードにいることを確認">>"ログアウト" OK? したがって、次のextend.xmlファイルとクラスがあります。
<suite name="ExtendFactory" group-by-instances="true">
<test name="Factory" preserve-order="true" group-by-instances="true">
<classes>
<class name="net.whaooo.ExtendFactory">
<methods>
<include name="launchSite"></include>
<include name="loginTest" />
<include name="userIsInHisOwnDashboardTest" />
<include name="logoutTest" />
</methods>
</class>
</classes>
</test>
</suite>
拡張クラス:
public class Extend extends BaseTest{
protected static FirefoxDriver driver;
private String a_driver;
private String password;
public Extend(String a_driver, String pwd){
this.a_driver = a_driver;
this.password = pwd;
}
@BeforeTest
public void stDriver() {
DesiredCapabilities caps = DesiredCapabilities.firefox(); caps.setCapability(CapabilityType.ForSeleniumServer.ENSURING_CLEAN_SESSION, true);
driver = new FirefoxDriver(caps);
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
}
@AfterTest
public void stopDriver() {
driver.close();
}
@Test
public void launch() {
launchSite(driver);
}
@Test (description = "Enter a valid login as driver")
public void loginTest() {
login(driver, a_driver, password);
}
@Test (description = "Check the driver is in his own dashboard")
public void userIsInHisOwnDashboardTest(){
userIsInHisOwnDashboardTest(driver, a_driver, password);
}
@Test(description="logout")
public void logout(){
logoutTest(driver);
}
}
単純化された工場:
public class ExtendFactory {
@Factory
public Object[] createInstances() {
Object[] result = new Object[2];
result[0] = new Extend("test1@test.com","tester");
result[1] = new Extend("test2@test.com","tester");
return result;
}
}
しかし、私の問題は、preserve-order="true" group-by-instances="true" 句を挿入しても、テストが開始される順序が xml ファイルで指定された順序に従わないことです。 order-by-instances="true" を使用します。誰でも私を助けることができますか?