簡體   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