ホームページ >Java >&#&チュートリアル >SpringBoot アサーション メカニズムの原理は何ですか?

SpringBoot アサーション メカニズムの原理は何ですか?

王林
王林転載
2023-05-14 12:28:111531ブラウズ

JUnit 5 の組み込みアサーションは次のカテゴリに分類できます:

1. 単純なアサーション

は、単一の値の単純な検証を実行するために使用されます。例:

##assertEquals 2 つのオブジェクトまたは 2 つのプリミティブ型が等しいかどうかを判断します##assertNotEquals2 つのオブジェクト参照が同じオブジェクトを指しているかどうかを判断します2 つのオブジェクト参照が異なるオブジェクトを指しているかどうかを判断します 指定されたブール値が true かどうかを判断します指定されたブール値が true であるかどうかを判断しますis false 指定されたオブジェクト参照が null かどうかを判断します判定指定されたオブジェクト参照が null ではありませんJTest5
package com.limi.springboottest2;
import org.junit.jupiter.api.*;
import org.springframework.boot.test.context.SpringBootTest;
import static org.junit.jupiter.api.Assertions.*;
@SpringBootTest
public class JTest5 {
    @Test
    public void simple() {
        assertEquals(3, 1 + 2, "simple math");
        System.out.println(1);
        assertNotEquals(3, 1 + 1);
        System.out.println(2);
        assertNotSame(new Object(), new Object());
        System.out.println(3);
        Object obj = new Object();
        assertSame(obj, obj);
        System.out.println(4);
        assertFalse(3 > 2);
        System.out.println(5);
        assertTrue(1 < 2);
        System.out.println(6);
        assertNull(null);
        System.out.println(7);
        assertNotNull(new Object());
        System.out.println(8);
    }
}
アサーションが false と判断された場合、プログラムは例外をスローした後すぐに終了します。
メソッド 説明
2 つのオブジェクトまたは 2 つのプリミティブ型が等しくないかどうかを判断します assertSame
assertNotSame
assertTrue
assertFalse
assertNull
assertNotNull

#2. 配列アサーション

assertArrayEquals メソッドを使用して、2 つのオブジェクトまたはプリミティブ型の配列が等しいかどうかを判断します。 SpringBoot アサーション メカニズムの原理は何ですか?

	//不相等抛出异常
    @Test
    public void array() {
        assertArrayEquals(new int[]{1, 2}, new int[] {1, 2, 3});
    }

3. 組み合わせアサーション

assertAll() メソッドは、検証対象として org.junit.jupiter.api.Executable 関数インターフェイスの複数のインスタンスを受け入れますアサーションはラムダ式を通じて簡単に提供できます。 SpringBoot アサーション メカニズムの原理は何ですか?

	//除非填写的断言都为真, 否则抛出异常
    @Test
    public void all() {
        assertAll("Math",
                () -> assertEquals(2, 1 + 1),
                () -> assertTrue(1 > 5),
                () -> assertNotNull(null)
        );
    }

2 番目のアサーションが false の場合でも、3 番目のアサーションは実行されます。つまり、assertAll() メソッド b に入力されたすべてのアサーションが実行されることに注意してください。

4. 例外アサーション

##JUnit 4 の時代でも、メソッドの異常状況をテストしたい場合、@Rule アノテーションを付けた ExpectedException 変数を使用するのは依然として面倒です。 JUnit5 は、関数型プログラミングで使用できる新しいアサーション メソッド Assertions.assertThrows() を提供します。 SpringBoot アサーション メカニズムの原理は何ですか?

    @Test
    public void exceptionTest() {
        ArithmeticException exception = Assertions.assertThrows(
                //当没有异常时, 扔出断言异常
                ArithmeticException.class, () -> System.out.println(5/ 2));
    }

5. タイムアウト アサーション

JUnit5 は、テスト メソッドのタイムアウトを設定するための Assertions.assertTimeout() も提供します。

    @Test@DisplayName("超时测试")public void timeoutTest() {
        //如果测试方法执行时间超过设置的时间将会抛出异常    
        Assertions.assertTimeout(Duration.ofMillis(1000), () -> Thread.sleep(5000));
    }

SpringBoot アサーション メカニズムの原理は何ですか?

6. 高速失敗

fail メソッドを使用して直接テストを失敗させます。このアサーションの後続のコードは実行されません

    @Test
    public void shouldFail() {
        System.out.println("123456");
        fail("This should fail");
        System.out.println("888888");
    }

SpringBoot アサーション メカニズムの原理は何ですか?

以上がSpringBoot アサーション メカニズムの原理は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。