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

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # JUnit 測試用例@Before @BeforeClass 注釋 > 原文: [https://www.guru99.com/junit-test-framework.html](https://www.guru99.com/junit-test-framework.html) JUnit 是 Java 中最受歡迎的單元[測試](/software-testing.html)框架。 明確建議將其用于[單元測試](/unit-testing-guide.html)。 JUnit 不需要服務器來測試 Web 應用程序,這可以使測試過程更快。 JUnit 框架還允許快速輕松地生成測試用例和測試數據。 **org.Junit** 軟件包包含許多用于 JUnit 測試的接口和類,例如 Test,Assert,After,Before 等。 ## 什么是測試治具 在了解什么是測試夾具之前,讓我們研究以下代碼 此代碼旨在在一個簡單的文件上執行兩個測試用例。 ``` public class OutputFileTest { private File output; output = new File(...); output.delete(); public void testFile1(){ //Code to verify Test Case 1 } output.delete(); output = new File(...); public void testFile2(){ //Code to verify Test Case 2 } output.delete(); } ``` 這里的幾個問題 * 該代碼不可讀 * 該代碼不容易維護。 * 當測試套件很復雜時,代碼可能包含邏輯問題。 使用 JUnit 比較相同的代碼 ``` public class OutputFileTest { private File output; @Before public void createOutputFile() { output = new File(...); } @After public void deleteOutputFile() { output.delete(); } @Test public void testFile1() { // code for test case objective } @Test public void testFile2() { // code for test case objective } } ``` 該代碼更具可讀性和可維護性。 上面的代碼結構是**測試裝置。** 測試夾具是運行[測試用例](/test-case.html)的環境。 通常,測試裝置包括: * 可用于任何測試用例的對象或資源。 * 需要進行活動以使這些對象/資源可用。 * 這些活動是 1. 分配(**設置**) 2. 取消分配(**拆解**)。 ### 設置和拆卸 * 通常,在每個測試用例之前必須完成一些重復的任務。 **示例:**創建數據庫連接。 * 同樣,在每個測試用例的結尾,可能會有一些重復的任務。 **示例:**在測試執行結束后進行清理。 * JUnit 提供了有助于設置和拆卸的注釋。 它確保釋放資源,并且測試系統處于準備好下一個測試用例的狀態。 這些注釋將在下面進行討論- **設置** **@Before** 注釋用于包含 [Java](/java-tutorial.html) 代碼的方法,以在每個測試用例之前運行。 即它在每次測試執行之前運行。 **拆解(與判決無關)** 在包含 Java 代碼的方法上使用 **@After** 批注,以在每個測試用例之后運行。 即使在測試用例或斷言失敗的情況下引發任何異常,這些方法也將運行。 **注意:** * 允許上面列出任意數量的注釋。 * 用 **@Before** 注釋的所有方法將在每個測試用例之前運行,但是它們可以按任何順序運行。 * 您可以從超類繼承@Before 和@After 方法,執行如下:它是 JUnit 中的標準執行過程。 1. 執行超類中的@Before 方法 2. 在此類中執行@Before 方法 3. 在此類中執行@Test 方法 4. 在此類中執行@After 方法 5. 在超類中執行@After 方法 **示例:使用文件作為測試夾具創建一個類** ``` public class OutputFileTest { private File output; @Before public void createOutputFile() { output = new File(...); } @After public void deleteOutputFile() { output.delete(); } @Test public void testFile1() { // code for test case objective } @Test public void testFile2() { // code for test case objective } } ``` 在上面的示例中,執行鏈如下: ![JUnit Test framework](https://img.kancloud.cn/6c/90/6c905618ff8ed12b1ce288ca8a135d70_585x269.png "JUnit Test framework") 1. createOutputFile() 2. testFile1() 3. deleteOutputFile() 4. createOutputFile() 5. testFile2() 6. deleteOutputFile() **假設:** testFile1()在 testFile2()之前運行–無法保證。 ### 一次性設置 * 在執行任何測試之前,以及在任何 **@Before** 方法之前,對于整個測試類只能運行一次方法。 * “僅設置一次”對于啟動服務器,打開通信等很有用。關閉和重新打開每個測試的資源非常耗時。 * 可以使用 **@BeforeClass** 批注來完成 ``` @BeforeClass public static void Method_Name() { // class setup code here } ``` ### 一次拆解 * 與僅一次安裝類似,也可以使用僅一次清除方法。 它在所有測試用例方法和注釋執行完畢后運行。 * 對于停止服務器,關閉通信鏈接等很有用。 * 可以使用 **@AfterClass** 批注來完成 ``` @AfterClass public static void Method_Name() { // class cleanup code here } ``` ## JUnit 測試套件 如果要按指定的順序執行多個測試,可以通過將所有測試合并到一個位置來完成。 這個地方稱為測試套件。 [教程](/create-junit-test-suite.html)涵蓋了有關如何執行測試套件以及如何在 JUnit 中使用測試套件的更多詳細信息。 ## Junit 測試運行器 JUnit 提供了用于執行測試用例的工具。 * **JUnitCore** 類用于執行這些測試。 * **org.junit.runner.JUnitCore** 提供的稱為 **runClasses** 的方法用于運行一個或幾個測試類。 * 此方法的返回類型是**結果**對象( **org.junit.runner.Result** ),該對象用于訪問有關測試的信息。 請參閱以下代碼示例,以獲取更多清晰信息。 ``` public class Test { public static void main(String[] args) { Result result = JUnitCore.runClasses(CreateAndSetName.class); for (Failure failure : result.getFailures()) { System.out.println(failure.toString()); } System.out.println(result.wasSuccessful()); } } ``` 在上面的代碼中,處理“結果”對象以獲取我們正在執行的測試用例的失敗和成功結果。 ## 第一個 JUnit 程序 對 SDLC,Java 編程的了解以及對軟件測試過程的了解有助于理解 JUnit 程序。 讓我們通過一個實例來了解單元測試。 我們需要使用帶有 **@Test** 的測試方法創建一個測試類,如下所示: **MyFirstClassTest.java** ``` package guru99.JUnit; import static org.JUnit.Assert.*; import org.JUnit.Test; public class MyFirstClassTest { @Test public void myFirstMethod(){ String str= "JUnit is working fine"; assertEquals("JUnit is working fine",str); } } ``` **TestRunner.java** 要執行我們的測試方法(上述),我們需要創建一個測試運行器。 在測試運行器中,我們必須在 JUnitCore 的 runclasses()方法中添加測試類作為參數。 它將根據測試是通過還是失敗返回測試結果。 有關此的更多詳細信息,請參見下面的代碼: ``` package guru99.JUnit; import org.JUnit.runner.JUnitCore; import org.JUnit.runner.Result; import org.JUnit.runner.notification.Failure; public class TestRunner { public static void main(String[] args) { Result result = JUnitCore.runClasses(MyFirstClassTest.class); for (Failure failure : result.getFailures()) { System.out.println(failure.toString()); } System.out.println("Result=="+result.wasSuccessful()); } } ``` **輸出** 一旦 **TestRunner.java** 執行了我們的測試方法,我們將獲得失敗或通過的輸出。 請在下面的輸出說明中找到: 1. 在此示例中,在執行 **MyFirstClassTest.java** 之后,測試通過,結果為綠色。 2. 如果失敗,則結果應該顯示為紅色,并且可以在失敗跟蹤中觀察到失敗。 參見下面的 JUnit gui: ![JUnit Test framework](https://img.kancloud.cn/59/e7/59e7731554519a1d07c1972ecaa4eec7_368x331.png "JUnit Test framework") **摘要**: * JUnit 是一個框架,它支持多個批注以標識包含測試的方法。 * JUnit 提供了一個稱為 **@Test,**的注釋,該注釋告訴 JUnit 使用該注釋的公共 void 方法可以作為測試用例運行。 * 測試裝置是測試用例運行的環境 * 要以指定的順序執行多個測試,可以通過將所有測試合并到一個位置來完成。 這個地方稱為測試套件。 * JUnit 提供了用于執行測試的工具,在這里我們可以運行稱為 Test Runner 的測試用例。
                  <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>

                              哎呀哎呀视频在线观看