<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 斷言示例 > 原文: [https://howtodoinjava.com/junit5/junit-5-assertions-examples/](https://howtodoinjava.com/junit5/junit-5-assertions-examples/) **JUnit5 斷言**幫助用測試用例的實際輸出來驗證期望的輸出。 為簡單起見,所有 **JUnit Jupiter 斷言**是[`org.junit.jupiter.Assertions`](http://junit.org/junit5/docs/current/api/org/junit/jupiter/api/Assertions.html)類中的靜態方法。 ```java Table of Contents Assertions.assertEquals() and Assertions.assertNotEquals() Assertions.assertArrayEquals() Assertions.assertIterableEquals() Assertions.assertLinesMatch() Assertions.assertNotNull() and Assertions.assertNull() Assertions.assertNotSame() and Assertions.assertSame() Assertions.assertTimeout() and Assertions.assertTimeoutPreemptively() Assertions.assertTrue() and Assertions.assertFalse() Assertions.assertThrows() Assertions.fail() ``` ## `Assertions.assertEquals()`和`Assertions.assertNotEquals()`示例 使用`Assertions.assertEquals()`斷言**期望值等于實際值**。 `assertEquals()`針對不同的數據類型(例如, `int`,`short`,`float`,`char`等。它還支持傳遞傳遞的錯誤消息,以防萬一測試失敗。 例如: ```java public static void assertEquals(int expected, int actual) public static void assertEquals(int expected, int actual, String message) public static void assertEquals(int expected, int actual, Supplier<String< messageSupplier) ``` ```java void testCase() { //Test will pass Assertions.assertEquals(4, Calculator.add(2, 2)); //Test will fail Assertions.assertEquals(3, Calculator.add(2, 2), "Calculator.add(2, 2) test failed"); //Test will fail Supplier&lt;String&gt; messageSupplier = ()-> "Calculator.add(2, 2) test failed"; Assertions.assertEquals(3, Calculator.add(2, 2), messageSupplier); } ``` 類似地,`Assertions.assertNotEquals()`方法用于斷言**期望值不等于實際值**。 與`assertEquals()`相比,`assertNotEquals()`不會針對不同的數據類型重載方法,而僅接受`Object`。 ```java public static void assertNotEquals(Object expected, Object actual) public static void assertNotEquals(Object expected, Object actual, String message) public static void assertNotEquals(Object expected, Object actual, Supplier<String> messageSupplier) ``` ```java void testCase() { //Test will pass Assertions.assertNotEquals(3, Calculator.add(2, 2)); //Test will fail Assertions.assertNotEquals(4, Calculator.add(2, 2), "Calculator.add(2, 2) test failed"); //Test will fail Supplier&lt;String&gt; messageSupplier = ()-> "Calculator.add(2, 2) test failed"; Assertions.assertNotEquals(4, Calculator.add(2, 2), messageSupplier); } ``` ## `Assertions.assertArrayEquals()`示例 與`assertEquals()`相似,`assertArrayEquals()`對數組執行相同的操作,即斷言**期望數組等于實際數組**。 它還具有針對不同數據類型的重載方法,例如`boolean[]`,`char[]`,`int[]`等。它還支持在測試失敗的情況下傳遞要打印的錯誤消息。 例如: ```java public static void assertArrayEquals(int[] expected, int[] actual) public static void assertArrayEquals(int[] expected, int[] actual, String message) public static void assertArrayEquals(int[] expected, int[] actual, Supplier<String> messageSupplier) ``` ```java void testCase() { //Test will pass Assertions.assertArrayEquals(new int[]{1,2,3}, new int[]{1,2,3}, "Array Equal Test"); //Test will fail because element order is different Assertions.assertArrayEquals(new int[]{1,2,3}, new int[]{1,3,2}, "Array Equal Test"); //Test will fail because number of elements are different Assertions.assertArrayEquals(new int[]{1,2,3}, new int[]{1,2,3,4}, "Array Equal Test"); } ``` ## `Assertions.assertIterableEquals()`示例 它斷言**期望和實際的可迭代項高度相等**。 高度相等意味著集合中元素的數量和順序必須相同; 以及迭代元素必須相等。 它還有 3 種重載方法。 ```java public static void assertIterableEquals(Iterable<?> expected, Iterable> actual) public static void assertIterableEquals(Iterable<?> expected, Iterable> actual, String message) public static void assertIterableEquals(Iterable<?> expected, Iterable> actual, Supplier<String> messageSupplier) ``` ```java @Test void testCase() { Iterable<Integer> listOne = new ArrayList<>(Arrays.asList(1,2,3,4)); Iterable<Integer> listTwo = new ArrayList<>(Arrays.asList(1,2,3,4)); Iterable<Integer> listThree = new ArrayList<>(Arrays.asList(1,2,3)); Iterable<Integer> listFour = new ArrayList<>(Arrays.asList(1,2,4,3)); //Test will pass Assertions.assertIterableEquals(listOne, listTwo); //Test will fail Assertions.assertIterableEquals(listOne, listThree); //Test will fail Assertions.assertIterableEquals(listOne, listFour); } ``` ## `Assertions.assertLinesMatch()`示例 它斷言**期望的字符串列表與實際列表**相匹配。 將一個字符串與另一個字符串匹配的邏輯是: 1. 檢查`expected.equals(actual)` –如果是,則繼續下一對 2. 否則將`expected`視為正則表達式,并通過 [`String.matches(String)`](https://docs.oracle.com/javase/8/docs/api/java/lang/String.html#matches-java.lang.String-) 檢查–如果是,則繼續下一對 3. 否則檢查`expected`行是否為快進標記,如果是,則相應地應用 快速前行并轉到 1。 有效的快進標記是以`>>`開頭和結尾并且至少包含 4 個字符的字符串。 快進文字之間的任何字符都將被丟棄。 ```java >>>> >> stacktrace >> >> single line, non Integer.parse()-able comment >> ``` ## `Assertions.assertNotNull()`和`Assertions.assertNull()`示例 `assertNotNull()`斷言**實際值不為空**。 類似地,`assertNull()`方法斷言**實際值為空**。 兩者都有三種重載方法。 ```java public static void assertNotNull(Object actual) public static void assertNotNull(Object actual, String message) public static void assertNotNull(Object actual, Supplier<String> messageSupplier) public static void assertEquals(Object actual) public static void assertEquals(Object actual, String message) public static void assertEquals(Object actual, Supplier<String> messageSupplier) ``` ```java @Test void testCase() { String nullString = null; String notNullString = "howtodoinjava.com"; //Test will pass Assertions.assertNotNull(notNullString); //Test will fail Assertions.assertNotNull(nullString); //Test will pass Assertions.assertNull(nullString); // Test will fail Assertions.assertNull(notNullString); } ``` ## `Assertions.assertNotSame()`和`Assertions.assertSame()`示例 `assertNotSame()`斷言**預期和實際不引用同一對象**。 同樣,`assertSame()`方法斷言,**預期和實際引用完全相同的對象**。 兩者都有三種重載方法。 ```java public static void assertNotSame(Object actual) public static void assertNotSame(Object actual, String message) public static void assertNotSame(Object actual, Supplier<> messageSupplier) public static void assertSame(Object actual) public static void assertSame(Object actual, String message) public static void assertSame(Object actual, Supplier<String> messageSupplier) ``` ```java @Test void testCase() { String originalObject = "howtodoinjava.com"; String cloneObject = originalObject; String otherObject = "example.com"; //Test will pass Assertions.assertNotSame(originalObject, otherObject); //Test will fail Assertions.assertNotSame(originalObject, cloneObject); //Test will pass Assertions.assertSame(originalObject, cloneObject); // Test will fail Assertions.assertSame(originalObject, otherObject); } ``` ## `Assertions.assertTimeout()`和`Assertions.assertTimeoutPreemptively()`示例 `assertTimeout()`和`assertTimeoutPreemptively()`均用于測試長時間運行的任務。 如果測試用例中的給定任務花費的時間超過指定的持續時間,則測試將失敗。 兩種方法之間唯一的區別是`assertTimeoutPreemptively()`中的設置,如果超過超時,`Executable`或`ThrowingSupplier`的執行將被搶先中止。 在`assertTimeout()`的情況下,不會中斷`Executable`或`ThrowingSupplier`。 ```java public static void assertTimeout(Duration timeout, Executable executable) public static void assertTimeout(Duration timeout, Executable executable, String message) public static void assertTimeout(Duration timeout, Executable executable, Supplier<String> messageSupplier) public static void assertTimeout(Duration timeout, ThrowingSupplier<T> supplier, String message) public static void assertTimeout(Duration timeout, ThrowingSupplier<T> supplier, Supplier<String> messageSupplier) ``` ```java @Test void testCase() { //This will pass Assertions.assertTimeout(Duration.ofMinutes(1), () -> { return "result"; }); //This will fail Assertions.assertTimeout(Duration.ofMillis(100), () -> { Thread.sleep(200); return "result"; }); //This will fail Assertions.assertTimeoutPreemptively(Duration.ofMillis(100), () -> { Thread.sleep(200); return "result"; }); } ``` ## `Assertions.assertTrue()`和`Assertions.assertFalse()`示例 `assertTrue()`斷言`BooleanSupplier`提供的條件為真。 類似地,`assertFalse()`斷言**提供的條件為假**。 它具有以下重載方法: ```java public static void assertTrue(boolean condition) public static void assertTrue(boolean condition, String message) public static void assertTrue(boolean condition, Supplier<String> messageSupplier) public static void assertTrue(BooleanSupplier booleanSupplier) public static void assertTrue(BooleanSupplier booleanSupplier, String message) public static void assertTrue(BooleanSupplier booleanSupplier, Supplier<String> messageSupplier) public static void assertFalse(boolean condition) public static void assertFalse(boolean condition, String message) public static void assertFalse(boolean condition, Supplier<String> messageSupplier) public static void assertFalse(BooleanSupplier booleanSupplier) public static void assertFalse(BooleanSupplier booleanSupplier, String message) public static void assertFalse(BooleanSupplier booleanSupplier, Supplier<String> messageSupplier) ``` ```java @Test void testCase() { boolean trueBool = true; boolean falseBool = false; Assertions.assertTrue(trueBool); Assertions.assertTrue(falseBool, "test execution message"); Assertions.assertTrue(falseBool, AppTest::message); Assertions.assertTrue(AppTest::getResult, AppTest::message); Assertions.assertFalse(falseBool); Assertions.assertFalse(trueBool, "test execution message"); Assertions.assertFalse(trueBool, AppTest::message); Assertions.assertFalse(AppTest::getResult, AppTest::message); } private static String message () { return "Test execution result"; } private static boolean getResult () { return true; } ``` ## `Assertions.assertThrows()`示例 它斷言所提供的`Executable`的執行將引發`expectedType`的異常并返回該異常。 ```java public static <T extends Throwable> T assertThrows(Class<T> expectedType, Executable executable) ``` ```java @Test void testCase() { Throwable exception = Assertions.assertThrows(IllegalArgumentException.class, () -> { throw new IllegalArgumentException("error message"); }); } ``` ## `Assertions.fail()`示例 `fail()`方法僅使測試失敗。 它具有以下重載方法: ```java public static void fail(String message) public static void fail(Throwable cause) public static void fail(String message, Throwable cause) public static void fail(Supplier<String> messageSupplier) ``` ```java public class AppTest { @Test void testCase() { Assertions.fail("not found good reason to pass"); Assertions.fail(AppTest::message); } private static String message () { return "not found good reason to pass"; } } ``` 將我的問題放在評論部分。 學習愉快!
                  <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>

                              哎呀哎呀视频在线观看