<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`和`@DataProvider`之間的區別 > 原文: [https://howtodoinjava.com/testng/testng-difference-between-factory-and-dataprovider/](https://howtodoinjava.com/testng/testng-difference-between-factory-and-dataprovider/) 在學習 TestNG 時,許多人在閱讀`@DataProvider`和`@Factory`注解時會感到困惑 - 什么時候使用什么? 還有什么更好的呢? 讓我們看看它們的兩個功能。 ## `@Factory`和`@DataProvider`之間的區別 以下是 TestNG 上`@Factory`和`@DataProvider`功能之間的主要**區別**。 1. **數據供應器**:使用數據供應器的測試方法將根據數據供應器提供的數據執行多次。 該測試方法將使用該測試方法所屬的相同測試類實例來執行。 2. **工廠**:工廠將使用相應類的單獨實例執行測試類中存在的所有測試方法。 TestNG 工廠用于動態創建測試類的實例。 如果要多次運行測試類,這將很有用。 例如,如果您有一個要登錄到站點的測試并且想要多次運行該測試,則它易于使用的 TestNG 工廠在其中創建多個測試類實例并運行測試(可能是測試任何內存泄漏) 問題)。 而數據供應器用于為測試提供參數。 如果為測試提供數據供應器,則每次運行測試時將使用不同的值集。 對于需要每次使用不同用戶名和密碼集登錄到站點的情況,這很有用。 讓我們創建一個示例,展示這兩者之間的明顯區別。 ## `@DataProvider`示例 下列類包含`testMethod`和`beforeClass`方法。 `testMethod`接受`String`參數,該參數的值由`DataProvider`方法`dataMethod`提供。 `beforeClass`方法在執行時將消息打印到控制臺上,`testMethod`也是如此。 `testMethod`在執行時將傳遞給它的參數打印到控制臺。 ```java public class DataProviderClass { @BeforeClass public void beforeClass() { System.out.println("Before class executed"); } @Test(dataProvider = "dataMethod") public void testMethod(String param) { System.out.println("The parameter value is: " + param); } @DataProvider public Object[][] dataMethod() { return new Object[][] { { "one" }, { "two" } }; } } ``` 讓我們進行測試。 ```java Before class executed The parameter value is: one The parameter value is: two PASSED: testMethod("one") PASSED: testMethod("two") ``` 從前面的測試結果中可以看到,無論執行了多少次測試方法,類`beforeClass`僅執行一次。 ## `@Factory`示例 下列類包含`testMethod`和`beforeClass`方法。 測試類的構造器采用`String`參數值。 `beforeClass`和`testMethod`都將消息打印到控制臺上。 ```java public class SimpleTest { private String param = ""; public SimpleTest(String param) { this.param = param; } @BeforeClass public void beforeClass() { System.out.println("Before SimpleTest class executed."); } @Test public void testMethod() { System.out.println("testMethod parameter value is: " + param); } } public class SimpleTestFactory { @Factory public Object[] factoryMethod() { return new Object[] { new SimpleTest("one"), new SimpleTest("two") }; } } ``` 讓我們進行測試。 ```java Before SimpleTest class executed. testMethod parameter value is: two Before SimpleTest class executed. testMethod parameter value is: one PASSED: testMethod PASSED: testMethod ``` 從先前的測試結果可以看出,在每次執行`testMethod`之前,都會執行`beforeClass`方法。 這表明工廠實現對測試類的每個單獨實例執行測試方法。 如前所述,`DataProvider`為測試類的單個實例執行測試方法(`testMethod`)。 **祝您學習愉快!**
                  <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>

                              哎呀哎呀视频在线观看