>  기사  >  Java  >  SpringBoot 어설션 메커니즘의 원리는 무엇입니까?

SpringBoot 어설션 메커니즘의 원리는 무엇입니까?

王林
王林앞으로
2023-05-14 12:28:111486검색

JUnit 5의 내장 어설션은 다음 범주로 나눌 수 있습니다.

1. 단순 어설션

은 단일 값의 간단한 검증을 수행하는 데 사용됩니다. 예:

Method Description
assertEquals 두 객체 또는 두 기본 유형이 동일한지 확인
assertNotEquals 두 객체 또는 두 객체가 동일한지 확인 기본 유형은 동일하지 않습니다
assertSame 두 개체 참조가 동일한 개체를 가리키는지 확인
assertNotSame 두 개체 참조가 서로 다른 개체를 가리키는지 확인
assertTrue 주어진 부울 값이 true인지 확인
assertFalse 주어진 부울 값이 false인지 확인
assertNull 주어진 개체 참조가 null인지 확인
assertNotNull 주어진 개체 참조가 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);
    }
}

assertion이 false로 판단되면 예외 발생 후 프로그램이 즉시 종료되고 나머지 코드는 실행되지 않습니다.

SpringBoot 어설션 메커니즘의 원리는 무엇입니까?

2. Array Assertion

assertArrayEquals 메소드를 사용하여 두 객체를 판단하거나 기본 유형의 배열이 동일한지 여부.

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

SpringBoot 어설션 메커니즘의 원리는 무엇입니까?

3. 결합된 주장

assertAll() 메서드는 검증할 주장으로 org.junit.jupiter.api.Executable 기능 인터페이스의 여러 인스턴스를 허용합니다. 이러한 주장은 람다 식을 통해 쉽게 제공될 수 있습니다.

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

SpringBoot 어설션 메커니즘의 원리는 무엇입니까?

두 번째 주장이 false인 경우에도 세 번째 주장은 여전히 ​​실행됩니다. 즉, AssertAll() 메서드 b에 채워진 주장이 실행되고 JUnit4에서 판단됩니다

4. 이 기간 동안 메소드의 비정상적인 상황을 테스트하고 싶을 때 @Rule이 붙은 ExpectedException 변수를 사용하는 것은 여전히 ​​번거로운 작업입니다. JUnit5는 함수형 프로그래밍에 사용할 수 있는 새로운 주장 메서드인 Assertions.assertThrows()를 제공합니다.

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

SpringBoot 어설션 메커니즘의 원리는 무엇입니까?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 어설션 메커니즘의 원리는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제