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