testng 中保留顺序和按实例分组是什么意思?

jin*_* ni 1 testng

我在 testng 中找不到这两个规范含义的详细解释。有人可以解释一下吗?检查下面的代码。

<?xml version="1.0" encoding="UTF-8"?>
Run Code Online (Sandbox Code Playgroud)

<test name = "Test1"  group-by-instances="true" preserve-order="true">
    <classes>
        <class name = "com.facebook.tests.SignUp_Test_Factory"></class>
    </classes>
</test>
Run Code Online (Sandbox Code Playgroud)

公共类 SignUp_Test_Factory {

WebDriver driver;
FacebookMainPage fbMainPage;
HashMap<String,String> singUpMap = new HashMap<String,String>();
@Factory(dataProvider = "signUp", dataProviderClass = PagesData.class)
public  SignUp_Test_Factory(String firstName, String lastName, String email) {
    singUpMap.put("firstName", firstName);
    singUpMap.put("lastName", lastName);
    singUpMap.put("email", email);

}
@BeforeClass(alwaysRun = true)
public void setUp(){
    driver = new FirefoxDriver();
    fbMainPage = PageFactory.initElements(driver, FacebookMainPage.class);
}

@AfterClass(alwaysRun = true)
public void teardown(){
    this.driver.quit();
}
@Test
public void loadPage(){
    fbMainPage.loadPage();
    driver.manage().deleteAllCookies();
}
@Test(dependsOnMethods = "loadPage")
public void fillFirstName(){
    fbMainPage.setText_FirstName(singUpMap.get("firstName"));
}
@Test(dependsOnMethods = "fillFirstName")
public void fillLastName(){

    fbMainPage.setText_LastName(singUpMap.get("lastName"));
}
@Test(dependsOnMethods = "fillLastName")
public void fillEmail(){

    fbMainPage.setText_EmailMobile(singUpMap.get("email"));
}
Run Code Online (Sandbox Code Playgroud)

}

public static Object[][] signUp(){
    return new Object[][]{
            {"jason","ni","nijinxin527@hotmail.com"},
            {"@#$%@","@#$@#","@#$$%%^@"},
            {"Lee","wang","wLee@gmail.com"}
    };
}
Run Code Online (Sandbox Code Playgroud)

“按实例分组”和“保留顺序”在这里做什么?

juh*_*err 5

关于preserve-order文档说:

默认情况下,TestNG 将按照在 XML 文件中找到的顺序运行测试。如果您希望此文件中列出的类和方法以不可预测的顺序运行,请将 keep-order 属性设置为 false

xml 描述说:

@attr keep-order 如果为 true,则此标记中的类将以与 XML 文件中找到的顺序相同的顺序运行。

所以我们可以说preserve-order="true"这里可能没用。但看起来有时有助于按预期顺序运行测试。(TestNG 某处出现问题?)


关于group-by-instances文档说

默认情况下,依赖方法按类分组。例如,如果方法 b() 依赖于方法 a(),TestNG 将不会运行 b(),直到所有实例都调用了它们的 a() 方法。在某些情况下,这种行为可能并不理想,例如测试不同国家/地区的 Web 浏览器的登录和注销。