<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # TestNG `@Factory`注解教程 > 原文: [https://howtodoinjava.com/testng/testng-factory-annotation-tutorial/](https://howtodoinjava.com/testng/testng-factory-annotation-tutorial/) 讓我們了解 **TestNG `@Factory`注解**,該注解允許根據某些數據集或條件在運行時創建測試。 ```java Table of Contents 1\. When to use testng factory 2\. Basic testng factory example 3\. TestNG factory - test parameters 4\. TestNG @Factory with @DataProvider 5\. TestNG @Factory - dependent tests ``` ## 1\. 何時使用 testng 工廠 有時我們可能需要**使用不同的數據值**運行一組測試。 為此,我們可以在 testng XML 的套件中定義一組獨立的測試,并測試所需的場景。 這種方法的問題在于,如果您獲得了額外的數據集,則需要重新定義測試。 TestNG 通過提供`@Factory`注解功能解決了此問題。 TestNG 中的工廠在運行時動態定義和創建測試。 工廠方法必須返回`Object`類的數組,即`Object[]`。 ## 2\. 基本的 testng 工廠示例 讓我們使用 TestNG 的`@Factory`注解創建一個示例程序,以了解**如何使用工廠**。 ```java public class SimpleTest { @Test public void simpleTest() { System.out.println("Simple Test Method."); } } public class SimpleTestFactory { @Factory public Object[] factoryMethod() { return new Object[] { new SimpleTest(), new SimpleTest() }; } } ``` 上一類在其中定義了工廠方法。 通過在相應的測試方法上方聲明`@Factory`來定義工廠方法。 讓我們現在運行工廠。 ```java Simple Test Method. Simple Test Method. PASSED: simpleTest PASSED: simpleTest ``` 如您在前面的測試結果中看到的,`SimpleTestFactory`類的測試方法執行了兩次。 該執行基于工廠方法返回的`Object`數組。 當所述方法返回`SimpleTest`類的兩個對象時,TestNG 在指定的返回對象內部查找并在其中執行所有測試方法。 在這種情況下,由于只有一種測試方法,因此 TestNG 會執行相應的測試方法。 ## 3\. TestNG 工廠參數 使用工廠方法的**主要優點之一是,您可以在初始化它們時將參數傳遞給測試類**。 然后,可以在上述類中存在的所有測試方法中使用這些參數。 ```java public class SimpleTest { private int param; public SimpleTest(int param) { this.param = param; } @Test public void testMethodOne() { int opValue = param + 1; System.out.println("Test method one output: " + opValue); } @Test public void testMethodTwo() { int opValue = param + 2; System.out.println("Test method two output: " + opValue); } } public class SimpleTestFactory { @Factory public Object[] factoryMethod() { return new Object[] { new SimpleTest(0), new SimpleTest(1) }; } } ``` 上一個測試類的構造器將一個參數作為整數,并將其分配給局部變量`param`。 然后,在測試類中提供的兩種測試方法中使用此變量。 每個測試方法都會為`param`添加一個值,并在執行時將其打印到控制臺。 現在開始運行測試。 ```java Test method one output: 2 Test method one output: 1 Test method two output: 3 Test method two output: 2 PASSED: testMethodOne PASSED: testMethodOne PASSED: testMethodTwo PASSED: testMethodTwo ``` 從前面的測試結果中可以看到,每個測試方法分別執行兩次。 測試方法使用初始化測試類時傳遞的參數,并且控制臺顯示相應的輸出。 ## 4\. TestNG `@Factory`和`@DataProvider` `@DataProvider`功能也可以與`@Factory`注解一起使用,以在運行時創建測試。 這可以通過在類的構造器或常規方法上聲明`@Factory`注解來完成。 ```java public class DataProviderTest { private int param; @Factory(dataProvider = "dataMethod") public DataProviderTest(int param) { this.param = param; } @DataProvider public static Object[][] dataMethod() { return new Object[][] { { 0 }, { 1 } }; } @Test public void testMethodOne() { int opValue = param + 1; System.out.println("Test method one output: " + opValue); } @Test public void testMethodTwo() { int opValue = param + 2; System.out.println("Test method two output: " + opValue); } } ``` 前面的類類似于我們先前使用的測試類。 測試類的構造器帶有`@Factory`注解。 此注解使用名為`dataMethod`的`DataProvider`方法為測試類的構造器提供值。 `DataProvider`方法返回一個雙對象數組,其中第一個數組代表數據集,該數據集確定要迭代測試的次數,而第二個數組是每次迭代將傳遞給測試方法的實際參數值。 所述雙對象數組包含兩個數據集,其值分別為 0 和 1。 現在開始運行測試。 ```java Test method one output: 2 Test method one output: 1 Test method two output: 3 Test method two output: 2 PASSED: testMethodOne PASSED: testMethodOne PASSED: testMethodTwo PASSED: testMethodTwo ``` ## 5\. TestNG `@Factory` – 依賴測試 到目前為止,我們已經看到了工廠實現的不同示例。 讓我們看看與工廠類一起使用時如何執行依賴方法。 ```java public class DependencyTest { private int param; public DependencyTest(int param) { this.param = param; } @Test(dependsOnMethods = { "testMethodTwo" }) public void testMethodOne() { System.out.println("Test method one with param values: " + this.param); } @Test public void testMethodTwo() { System.out.println("Test method two with param values: " + this.param); } } public class SimpleTestFactory { @Factory public Object[] factoryMethod() { return new Object[] { new DependencyTest(1), new DependencyTest(2) }; } } ``` 此類包含兩種測試方法`testMethodOne`和`testMethodTwo`,其中`testMethodOne`取決于`testMethodTwo`。 該類的構造器將一個參數作為整數,并將其值設置為名為`param`的內部變量。 這兩種測試方法在執行時都會將其方法名稱和`param`變量值一起打印到控制臺。 現在開始運行測試。 ```java Test method two with param values: 2 Test method two with param values: 1 Test method one with param values: 2 Test method one with param values: 1 PASSED: testMethodTwo PASSED: testMethodTwo PASSED: testMethodOne PASSED: testMethodOne ``` 從前面的測試結果可以看出,`testMethodTwo`的兩個實例都在`testMethodOne`的任何實例之前執行。 這是 TestNG 中工廠實現的默認行為,它將在實際測試方法之前執行從屬測試方法的所有實例。 這與 TestNG 中的 **`@Factory`注解有關**。 如果您有任何疑問,請告訴我。 學習愉快! 參考: [TestNG 文檔](http://testng.org/doc/documentation-main.html)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看