[SpringBoot] JUnit5 Life Cycle

도리도리·2023년 11월 5일
0

SpringBoot

목록 보기
3/9
post-custom-banner

JUnit 5 Life Cycle

JUnit은 객체의 생명주기 (Life Cycle) 관리를 지원한다.
이 기능을 이용하면 각 테스트 케이스마다 새로운 객체를 생성해주므로
각 테스트 케이스의 독립성을 확보 할 수 있다.

동작순서

Life Cycle 정보

 어노테이션  실행시점Static 사용 여부
@BeforeAll전체 테스트
시작하기 전에
처음으로 한 번만 실행
전체 테스트
실행 주기에서 한 번만 호출
하기 때문에 메서드를
static 선언
데이터베이스 연결
or
테스트 환경을 초기화 할 때 사용
@BeforeEach테스트 케이스를 시작하기 전에 매번 실행각 인스턴스에 대해 메서드 호출해야 하므로 메서드는 static 아니어야 함테스트 메서드에서
사용하는 객체 초기화
or
테스트에 필요한 값을
미리 넣을 때 사용
@AfterAll전체 테스트를 마치고
종료하기 전에 1회 실행
전체 테스트 실행 주기에서
한 번만 호출되어야 하기 때문에
메서드를 static으로 선언
데이터베이스 연결 종료
or
공통적으로 사용하는
자원을 해제할 때 사용
@AfterEach각 테스트 케이스
종료하기 전 매번 실행
각 인스턴스에 대해 메서드 호출해야 하므로 메서드는 static 아니어야 함테스트 이후에 특정 데이터를 삭제해야 하는 경우에 사용

사용 코드

public class JunitCycleTest {

    @BeforeAll
    static void beforeAll() {
        System.out.println("@BeforeAll");
    }

    @BeforeEach
    public void beforeEach() {
        System.out.println("@BeforeEach");
    }

    @Test
    public void test1() {
        System.out.println("test1");
    }

    @Test
    public void test2() {
        System.out.println("test2");
    }

    @Test
    public void test3() {
        System.out.println("test3");
    }

    @AfterAll
    static void afterAll() {
        System.out.println("@AfterAll");
    }

    @AfterEach
    public void afterEach() {
        System.out.println("@AfterEach");
    }
}

우선 실행 순서를 보자면

우선 실행 순서를 보자면
1. @BeforeAll 실행
2. @BeforeEach 실행
2-1. @Test 실행
2-2. @AfterEach 실행
2-3. 모든 @Test 가 완료 될 때까지 순차적으로 실행
3. @AfterAll
4. 테스트 종료.

그러면 예상되는 출력 값은?

우선 실행 순서를 보자면
1. @BeforeAll
2. @BeforeEach
2-1. test1
2-2. @AfterEach
3. @BeforeEach
3-1. test2
3-2. @AfterEach
4. @BeforeEach
4-1. test3
4-2. @AfterEach
5. @AfterAll
6. 테스트 종료.

결과

profile
개발자에 꽃
post-custom-banner

0개의 댓글