我找不到这两个规范在testng中的含义的详细解释。有人可以解释一下吗?请检查以下代码。
<?xml version="1.0" encoding="UTF-8"?>
<test name = "Test1" group-by-instances="true" preserve-order="true">
<classes>
<class name = "com.facebook.tests.SignUp_Test_Factory"></class>
</classes>
</test>
公共类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"));
}
}
public static Object[][] signUp(){
return new Object[][]{
{"jason","ni","nijinxin527@hotmail.com"},
{"@#$%@","@#$@#","@#$$%%^@"},
{"Lee","wang","wLee@gmail.com"}
};
}
“按实例分组”和“保留订单”在这里做什么?
答案 0 :(得分:4)
关于preserve-order
,documentation说:
默认情况下,TestNG将按照XML文件中的测试顺序运行测试。如果您希望此文件中列出的类和方法以不可预测的顺序运行,请将preserve-order属性设置为false
@attr preserve-order如果为true,则此标记中的类将按照XML文件中的顺序运行。
所以我们可以说preserve-order="true"
在这里是无用的。但看起来它有时有助于按预期顺序运行测试。 (TestNG问题出在哪里?)
关于group-by-instances
documentation说:
默认情况下,依赖方法按类分组。例如,如果方法b()依赖于方法a(),则TestNG将不会运行b(),直到所有实例都调用了它们的a()方法。在某些情况下可能不希望出现这种情况,例如测试登录和退出各个国家/地区的Web浏览器。