我在 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)
“按实例分组”和“保留顺序”在这里做什么?
关于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 浏览器的登录和注销。