JUnit5 라이프 사이클 - @BeforeAll, @BeforeEach, @AfterAll, @AfterEach

JUnit5 라이프 사이클, 테스트 진행 전후에 처리할 메소드 설명. @BeforeAll, @BeforeEach, @AfterAll, @AfterEach

@BeforeAll

@BeforeAll가 선언된 메서드는 테스트 클래스의 모든 테스트 메서드가 실행 전에 딱 한번만 실행된다.

주로 테스트 클래스에 대해 한 번만 수행해야 하는 데이터베이스 연결 설정 또는 내장 서버 시작을 하는 거와 같은 무거운 작업이 필요시에 사용된다.

메서드 시그니쳐는 static을 반듯이 선언해야 한다.

@BeforeAll
static void runOnceBeforeAllTests() {
    System.out.println("@BeforeAll executed \n");
}

@BeforeEach

@BeforeEach 선언된 메서드는 각 테스트 메서드 실행 이전에 실행된다.

@BeforeEach
void runBeforeEveryTest() {
  System.out.println("@BeforeEach executed");
}

@AfterEach

@AfterEach가 선언된 메서드는 각 테스트 메서드 실행 이후에 실행된다.

@AfterEach
void runAfterEveryTest() {
    System.out.println("@AfterEach executed \n");
}

@AfterAll

@AfterAll가 선언된 메서드는 테스트 클래스에 모든 테스트 메서드가 실행된 이후에 딱 한번 실행된다.

주로 @BeforeAll 메서드에서 수행되는 설정은 일반적으로 테스트 클래스에 대해 한 번만 수행되는 데이터베이스 연결을 닫거나 내장 서버를 종료와 같은 작업을 실행할 때에 사용된다.

메서드 시그니쳐는 static을 반듯이 선언해야 한다.

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

실행 순서

package com.devkuma.junit;

import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

public class BeforeAfter {

    @Test
    void testMethod1() {
        System.out.println("@Test method1 executed");
    }

    @Test
    void testMethod2() {
        System.out.println("@Test method1 executed");
    }

    @BeforeAll
    static void runOnceBeforeAllTests() {
        System.out.println("@BeforeAll executed \n");
    }


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

    @BeforeEach
    void runBeforeEveryTest() {
        System.out.println("@BeforeEach executed");
    }

    @AfterEach
    void runAfterEveryTest() {
        System.out.println("@AfterEach executed \n");
    }

}

실행 결과:

@BeforeAll executed 

@BeforeEach executed
@Test method1 executed
@AfterEach executed 

@BeforeEach executed
@Test method1 executed
@AfterEach executed 

@AfterAll executed

참고




최종 수정 : 2022-09-22