gpt4 book ai didi

java - 仅当包含在 "testng suite"中时,同一类中的依赖方法才会乱序运行;独立运行类尊重依赖关系

转载 作者:行者123 更新时间:2023-12-01 15:16:11 24 4
gpt4 key购买 nike

我有一个带有使用 TestNG 注释的依赖方法的类

dependsOnMethods

如果我只是从包中将其作为 TestNG 测试运行,则该测试 100% 运行良好。

当我将测试包含在 TestNG Suite 中时,方法运行不正常。是的,我正在使用:

  <test name="Test" preserve-order="true">

在我的 .xml 文件中。

套件中的所有其他测试都遵循方法顺序并且运行不会出现问题。是否有任何已知信息可以说明为什么会发生这种情况?

测试用例代码:

@Test(groups={ "Administration"})
public class RoleCrudTest extends AbstractIntegrationTest
{
protected static SeleniumActionHelper action;

@Test
public void inactiveRole() throws Exception
{
SeleniumHelper helper = new SeleniumHelper();
action = new SeleniumActionHelper(driver);

helper.login();

String roleUrl = navigateToUrl("role/roles.xhtml");
driver.get(roleUrl);

assertEquals("Role:", findElementBySelector("span.portletButtonHeader").getText());

WebElement roleName = findElementById("roleName");
assertFalse(roleName.isEnabled());

WebElement deptId = findElementById("deptid");
assertFalse(deptId.isEnabled());
}

@Test(dependsOnMethods = "inactiveRole")
public void createRole() throws Exception
{
WebElement addButton = findElementById("add");
addButton.click();

waitUntilAjaxRequestCompletes();

WebElement roleName = findElementById("roleName");
roleName.click();
roleName.sendKeys("AAAAAAAA");

WebElement deptId = findElementByXpath("(//button[@type='button'])[3]");
deptId.click();

WebElement dept = findElementByXpath("//div[@id='department_panel']/ul/li[2]");
dept.click();

WebElement checkbox = findElementByXpath("//li[@id='privileges:1']/div/span/div/div");
checkbox.click();

Thread.sleep(1000);

WebElement save = findElementById("save");
save.click();

assertEquals("Role saved successfully", findElementBySelector("div.ui-growl-message > p").getText());
}

@Test(dependsOnMethods = "createRole")
public void editUndo() throws Exception
{
Thread.sleep(1000);

WebElement tableSort = findElementByXpath("//th[@id='tableSection:rolesListWrapped:j_idt85']/div/span[2]");
tableSort.click();

Thread.sleep(1000);

WebElement createdRole = findElementByXpath("//tbody[@id='tableSection:rolesListWrapped_data']/tr[1]/td/div");
createdRole.click();

Thread.sleep(1000);

WebElement roleName = findElementById("roleName");
roleName.click();
roleName.clear();
roleName.sendKeys("edited");

WebElement deptId = findElementByXpath("(//button[@type='button'])[3]");
deptId.click();

WebElement dept = findElementByXpath("//div[@id='department_panel']/ul/li[3]");
dept.click();

WebElement checkbox = findElementByXpath("//li[@id='privileges:1']/div/span/div/div/span");
checkbox.click();

WebElement checkbox2 = findElementByXpath("//li[@id='privileges:0']/div/span/div/div");
checkbox2.click();

Thread.sleep(1000);

WebElement undo = findElementById("cancel");
undo.click();

String text = findElementById("roleName").getAttribute("value");
String oldtext = "AAAAAAAA";

assertTrue(text.equals(oldtext));
}

@Test(dependsOnMethods = "editUndo")
public void editRole() throws Exception
{
Thread.sleep(1000);

WebElement createdRole = findElementByXpath("//tbody[@id='tableSection:rolesListWrapped_data']/tr[1]/td/div");
createdRole.click();

Thread.sleep(1000);

WebElement roleName = findElementById("roleName");
roleName.click();
roleName.clear();
roleName.sendKeys("AAAAAAAAedited");

WebElement deptId = findElementByXpath("(//button[@type='button'])[3]");
deptId.click();

WebElement dept = findElementByXpath("//div[@id='department_panel']/ul/li[3]");
dept.click();

WebElement checkbox = findElementByXpath("//li[@id='privileges:1']/div/span/div/div/span");
checkbox.click();

WebElement checkbox2 = findElementByXpath("//li[@id='privileges:0']/div/span/div/div");
checkbox2.click();

Thread.sleep(1000);

WebElement save = findElementById("save");
save.click();

assertEquals("Role saved successfully", findElementBySelector("div.ui-growl-message > p").getText());
}

@Test(dependsOnMethods = "editRole")
public void deleteRole() throws Exception
{
Thread.sleep(1000);

WebElement deleteButton = findElementById("tableSection:delete");
deleteButton.click();

WebElement deleteConfirm = findElementById("confirmDelete:yes");
deleteConfirm.click();

Thread.sleep(500);

assertEquals("Role deleted successfully", findElementBySelector("div.ui-growl-message > p").getText());

waitUntilAjaxRequestCompletes();
}

}

最佳答案

dependsOnMethods 是您想要的,而不是 preserve-order (实际上,建议使用 dependsOnGroups 而不是 dependsOnMethods,但两者都可以工作)。

如果您有一个显示问题的小测试用例,请发布它

关于java - 仅当包含在 "testng suite"中时,同一类中的依赖方法才会乱序运行;独立运行类尊重依赖关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11569080/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com