TestNG在子测试之前运行同级测试

TestNG在子测试之前运行同级测试,testng,Testng,我正在使用Selenium和TestNG编写一些测试,其中,我有一个起点(登录屏幕),它分叉到不同的场景。例如,以下测试 登录测试 主页测试 选择选项1 选项1测试 选择选项2 选项2测试 我遇到的问题是TestNG在运行“选择选项1”的子测试之前先运行“选择选项1”,然后运行“选择选项2”。我想要的是TestNG以深度优先而不是广度优先的顺序运行测试 LoginTestNG.java @ContextConfiguration(value = {"classpath:sel

我正在使用Selenium和TestNG编写一些测试,其中,我有一个起点(登录屏幕),它分叉到不同的场景。例如,以下测试

  • 登录测试
    • 主页测试
      • 选择选项1
        • 选项1测试
      • 选择选项2
        • 选项2测试
我遇到的问题是TestNG在运行“选择选项1”的子测试之前先运行“选择选项1”,然后运行“选择选项2”。我想要的是TestNG以深度优先而不是广度优先的顺序运行测试

LoginTestNG.java

@ContextConfiguration(value = {"classpath:selenium-test.xml"})
public class LoginTestNG extends AbstractTestNGSpringContextTests {

  @Test(groups = {"connect"})
  public void connect(ITestContext context) {
    System.out.println("Connect to URL");
  }

  @Test(groups = {LOGIN_FAILURE_GROUP}, dependsOnGroups = {"connect"}, priority = 0)
  public void loginFailure(ITestContext context) {
    System.out.println("Login failure");
  }

  @Test(groups = {LOGIN_SUCCESS_GROUP}, dependsOnGroups = {"connect"}, priority = 1)
  public void loginSuccess(ITestContext context) {
    System.out.println("Login Succes");
  }
}
Option1TestNG.java(Option2TestNG.java目前是Option1TestNG.java的副本,编号已更改)

编写(和使用)自定义是更好地控制执行顺序的方法

@ContextConfiguration(value = {"classpath:selenium-test.xml"})
public class Option1TestNG extends AbstractTestNGSpringContextTests {

  @Test(groups = { "OPTION_1_GROUP" }, dependsOnGroups = { LoginTestNG.LOGIN_SUCCESS_GROUP })
  public void selectOption1(ITestContext context) {
    System.out.println("Option 1");
  }

  @Test(groups = { APPLICANT_FAILURE}, dependsOnGroups = {CREDIT_REPORTS_GROUP}, priority = 0)
  public void submitApplicantWithoutSettingFields(ITestContext context) {
    System.out.println("Option 1 submit applicant no fields set");
  }

  @Test(groups = { APPLICANT_SUCCESS}, dependsOnGroups = {CREDIT_REPORTS_GROUP}, priority = 1)
  public void submitApplicantSettingFields(ITestContext context) {
    System.out.println("Option 1 submit applicant success"); 
    System.out.println("Go back to home page");
  }
}