如何在testng中使控制流从一个测试类流向另一个测试类?

euoag5mw  于 2021-07-04  发布在  Java
关注(0)|答案(3)|浏览(339)

我有4个测试用例,我希望第一个测试用例从demo1.java运行,然后从demo2.java运行另外2个测试用例,然后返回demo1.java执行最后一个测试用例。
我有什么办法可以做到这一点吗?谢谢你的帮助。
我试过了 priority 参数,但我猜这只是检查同一测试类中的优先级
下面是一个示例代码-
演示1.java

class Demo1{

  @Test
  public void testOne(){ //This case should be executed first
  }

  @Test
  public void testFour(){ //This case should be executed last
  }

}

演示2.java

class Demo2{

  @Test
  public void testTwo(){ // This case should be executed 2nd in the order
  }

  @Test
  public void testThree(){ // This case should be executed 3rd in the order
  }
}
8wigbo56

8wigbo561#

@dependsongroups和@dependsonmethods注解的组合提供了testng中跨类和方法的测试排序的最可伸缩的方式。
@dependsongroups将帮助实现跨类的排序
@dependsonmethods将帮助实现类内的排序
以下是使用@dependsonroups和@dependsonmethods的工作示例:
脚本:
有两个测试类-atest.java,btest.java
atest有两种测试方法-a1、a2
btest有两种测试方法-b1,b2
执行顺序必须为:a1、b1、b2、a2
测试.java

public class ATest.java {

    @Test(groups = "group-a1")

    public void A1() {
        System.out.println("Test A1: Runs before B1");
    }

    @Test(dependsOnGroups = "group-b2")
    public void A2() {
        System.out.println("Test A2: Runs after B2");
    }
}

测试.java

public class BTest {

    @Test(dependsOnGroups = "group-a1")
    public void B1() {
        System.out.println("Test B1: Runs after A1");
    }

    @Test(dependsOnMethods = "B1", groups = "group-b2")
    public void B2() {
        System.out.println("Test B2: Runs after B1");
    }
}

注意:上述排序只能通过使用@dependsonmethods注解来实现。
但是,不建议跨类使用@dependsonmethods,因为这将强制要求整个套件中的每个测试用例方法都有唯一的名称。
@dependsongroups的使用将允许测试命名的灵活性,并使跨类实现排序变得容易,而不会带来麻烦。
更多信息:
https://testng.org/doc/documentation-main.html

eivgtgni

eivgtgni2#

您可以通过以下方法实现。
类test1扩展了类test2:

public class TEST1 extends TEST2{
@Test(priority = 1)
public void testOne() {
    System.out.println("Test method one");
}

@Test(priority = 4)
public void testTwo() {
    System.out.println("Test method two");
}

}
类测试2:

@Test(priority = 2)
public void testThree() {
    System.out.println("Test three method in Inherited test");
}

@Test(priority = 3)
public void testFour() {
    System.out.println("Test four method in Inherited test");
}
vaqhlq81

vaqhlq813#

是的,您可以通过帮助订购junit测试用例

@FixMethodOrder(MethodSorters.JVM)
@TestMethodOrder(Alphanumeric.class)
@TestMethodOrder(OrderAnnotation.class)
@TestMethodOrder(TestCaseLengthOrder.class)

有关详细信息,请单击此链接,以获取更多详细信息

相关问题