首页 > 解决方案 > 仅在您的班级之一完成测试后,如何以班级级别的并行性运行您的测试

问题描述

我陷入了一个相当独特的问题,我相信你们中的一些人可能在某些时候遇到过类似的问题。

所以我的 testNg 套件中总共有 10 个测试类,我希望它们并行运行。这很容易,但问题是我的课程之一让我们假设类 Test A,不仅设置测试数据,还测试应用程序的一些功能,因此我不能在 BeforeSuite 或 BeforeTest 注释下使用它。通过在此类下执行测试创建的测试数据对于其他测试类的运行很重要,因此我真的很想知道如何以这样的方式实现类级并行性,即并行运行仅在测试下的测试后启动一个类完成了它的执行。

概括

A类测试

public class TestsA {

   @BeforeClass
   public setupTestClass(){
   -----some code--------
  }
  @Test
  public test1(){
 ------some code---
}

我希望这个 TestA 类首先运行,然后并行实例化其他测试类。对此的任何帮助将不胜感激。

谢谢

标签: javaparallel-processingtestngparallel-testing

解决方案


默认情况下,所有测试方法都将具有优先级“0”值。因此,如果您希望在所有其他测试之前执行特定的测试方法,那么您可以将该特定测试的优先级设置为 -1。次要优先级将是它在 testng 中的执行。因此,优先级为 -1 的测试优先于所有其他优先级为“0”的测试。

示例为单个测试方法设置优先级

public class ClassA {

@Test(priority = -1)
public void b(){
    System.out.println("Test1");
}

@Test
public void a(){
    System.out.println("Test2");
}

}

示例 2:为整个班级设置优先级

@Test(priority = -1)
public class ClassA {


public void b(){
    System.out.println("Test1");
}


public void a(){
    System.out.println("Test2");
}

}

输出对于这两个示例:

测试1

测试2


推荐阅读