繁体   English   中英

仅在您的 class 之一完成测试后,如何在 class 级别并行性中运行您的测试

[英]How to run your tests in class level parallelism only after one of your class has finished with it's tests

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

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

概括

Class 测试A

public class TestsA {

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

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

谢谢

默认情况下,所有测试方法都将具有优先级“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:为整个 class 设置优先级

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


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


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

}

Output 对于这两个示例:

测试1

测试2

我已经找到了解决上述问题的方法。 我所要做的就是在我的 testng.xml 套件上配置两个不同的测试。 第一个测试将只有测试 class A,而另一个测试将有其他测试类在 class 级别具有并行性。 由于在第一次测试下只有一个 class,因此将首先执行 class 下的测试。 在我的例子中测试 Class A 负责测试一些功能以及设置一些数据。 然后您的 testng.xml 的下一个测试将并行实例化其他类。

下面是我的 testng.xml 的样子


    <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">

    <suite name="Test_Suite_Name" verbose="1" parallel="classes" thread-count="4">
        <test name="TEST_TESTCLASSA" preserve-order="true">
            <parameter name="environment" value="macos"/>
            <groups>
                <run>
                    <include name="Smoke"/>
                    <exclude name="Sanity"/>
                    <exclude name="Exclude"/>
                </run>
            </groups>
            <classes>
                <class name="testpackage.TestClassA"/>
            </classes>
        </test>
        <test name="TEST_OTHER_TESTS" preserve-order="true">
            <parameter name="environment" value="macos"/>
            <groups>
                <run>
                    <include name="Smoke"/>
                    <exclude name="Sanity"/>
                    <exclude name="Exclude"/>
                </run>
            </groups>
            <classes>
                <class name="testpackage.TestClassB"/>
                <class name ="testpackage.TestClassC"/>
                <class name="testpackage.TestClassD"/>
                <class name="testpackage.TestClassE"/>
                <class name="testpackage.TestClassF"/>
                <class name="testpackage.TestClassG"/>
            </classes>
        </test>
    </suite>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM