<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 功能強大 支持多語言、二開方便! 廣告
                # JUnit5 與 JUnit4 > 原文: [https://howtodoinjava.com/junit5/junit-5-vs-junit-4/](https://howtodoinjava.com/junit5/junit-5-vs-junit-4/) JUnit5 旨在適應 Java8 編碼風格,并且比 JUnit4 更加健壯和靈活。在本篇文章 **JUnit5 vs JUnit4** 中,我們將重點介紹 JUnit4 和 JUnit5 之間的一些主要區別。 ## 1\. JUnit5 與 JUnit4 – 注解 兩個版本中的大多數注解都相同,但幾乎沒有區別。 這是一個快速比較。 | 特性 | JUnit4 | JUnit5 | | --- | --- | --- | | 聲明測試方法 | `@Test` | `@Test` | | 在當前類中的所有測試方法之前執行 | `@BeforeClass` | `@BeforeAll` | | 在當前類中的所有測試方法之后執行 | `@AfterClass` | `@AfterAll` | | 在每種測試方法之前執行 | `@Before` | `@BeforeEach` | | 在每種測試方法之后執行 | `@After` | `@AfterEach` | | 禁用測試方法/類 | `@Ignore` | `@Disabled` | | 進行動態測試的測試工廠 | 不適用 | `@TestFactory` | | 嵌套測試 | NA | `@Nested` | | 標記和過濾 | `@Category` | `@Tag` | | 注冊自定義擴展 | NA | `@ExtendWith` | ## 2\. JUnit5 和 JUnit4 之間的其他區別 #### 2.1 架構 JUnit4 將所有內容捆綁到單個 jar 文件中。 JUnit5 由 3 個子項目組成,即 JUnit Platform,JUnit Jupiter 和 JUnit Vintage。 1. ##### JUnit 平臺 它定義了`TestEngine` API,用于開發在平臺上運行的新測試框架。 2. ##### JUnit Jupiter 它具有所有新的 junit 注解和`TestEngine`實現,以運行使用這些注解編寫的測試。 3. ##### JUnit Vintage 為了支持在 JUnit5 平臺上運行 JUnit 3 和 JUnit4 書面測試。 #### 2.2 所需的 JDK 版本 JUnit4 需要 Java 5 或更高版本。 JUnit5 需要 Java8 或更高版本。 #### 2.3 斷言 在 JUnit4 中,[`org.junit.Assert`](http://junit.org/junit4/javadoc/4.12/org/junit/Assert.html)具有所有肯定的方法來驗證預期結果和結果。 他們接受錯誤消息的額外參數作為方法簽名中的第一個參數。 例如: ```java public static void assertEquals(long expected, long actual) public static void assertEquals(String message, long expected, long actual) ``` 在 JUnit5 中,[`org.junit.jupiter.Assertions`](http://junit.org/junit5/docs/current/api/org/junit/jupiter/api/Assertions.html)包含大多數斷言方法,包括其他`assertThrows()`和`assertAll()`方法。 到目前為止,`assertAll()`處于實驗狀態,用于分組斷言。 JUnit5 斷言方法還具有重載方法,以在測試失敗(例如測試失敗)時支持傳遞要打印的錯誤消息。 ```java public static void assertEquals(long expected, long actual) public static void assertEquals(long expected, long actual, String message) public static void assertEquals(long expected, long actual, Supplier messageSupplier) ``` #### 2.4 假設 在 JUnit4 中,[`org.junit.Assume`](http://junit.org/junit4/javadoc/4.12/org/junit/Assume.html)包含一些方法,用于陳述有關測試有意義的條件的假設。 它具有以下五種方法: 1. `assumeFalse()` 2. `assumeNoException()` 3. `assumeNotNull()` 4. `assumeThat()` 5. `assumeTrue()` 在 JUnit5 中,[`org.junit.jupiter.api.Assumptions`](http://junit.org/junit5/docs/current/api/org/junit/jupiter/api/Assumptions.html) 包含一些方法,用于陳述有關測試有意義的條件的假設。 它具有以下三種方法: 1. `assumeFalse()` 2. `assumingThat?()` 3. `assumeTrue()` #### 2.5 標記和過濾 在 JUnit4 中,使用`@category`注解。 在 JUnit5 中,使用`@tag`注解。 #### 2.6 測試套件 在 JUnit4 中,`@RunWith`和`@Suite`注解。 例如: ```java import org.junit.runner.RunWith; import org.junit.runners.Suite; @RunWith(Suite.class) @Suite.SuiteClasses({ ExceptionTest.class, TimeoutTest.class }) public class JUnit4Example { } ``` 在 JUnit5 中,`@RunWith`,`@SelectPackages`和`@SelectClasses`例如: ```java import org.junit.platform.runner.JUnitPlatform; import org.junit.platform.suite.api.SelectPackages; import org.junit.runner.RunWith; @RunWith(JUnitPlatform.class) @SelectPackages("com.howtodoinjava.junit5.examples") public class JUnit5Example { } ``` #### 2.7 第三方整合 在 JUnit4 中,不支持對第三方插件和 IDE 的集成。 他們必須依靠[反射](//howtodoinjava.com/java/related-concepts/real-usage-examples-of-reflection-in-java/)。 JUnit5 為此有專門的子項目,即 JUnit Platform。 它定義了`TestEngine` API,用于開發在平臺上運行的測試框架。 請在評論部分中對 JUnit5 和 JUnit4 之間的**比較**發表您的看法。 學習愉快!
                  <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>

                              哎呀哎呀视频在线观看