
JUnit은 자바에서 가장 널리 사용되는 테스트 프레임워크!
테스트의 신뢰성과 독립성을 확보하기 위해 테스트 인스턴스의 생명주기와 수명주기 메서드를 제공
| 어노테이션 | 실행 시점 | 메서드 유형 | 주요 용도/예시 |
|---|---|---|---|
| @BeforeAll | 모든 테스트 메서드 실행 전 (1회) | static 메서드 | DB 연결, 테스트 환경 초기화 등 |
| @BeforeEach | 각 테스트 메서드 실행 전 | 인스턴스 메서드 | 매 테스트마다 초기화 작업 |
| @Test | 실제 테스트 코드 | 인스턴스 메서드 | 테스트 본문 |
| @AfterEach | 각 테스트 메서드 실행 후 | 인스턴스 메서드 | 매 테스트마다 정리 작업 |
| @AfterAll | 모든 테스트 메서드 실행 후 (1회) | static 메서드 | DB 종료, 공통 자원 해제 등 |
package book.demo;
import org.junit.jupiter.api.*;
public class JunitCycleTest {
@BeforeAll //전체 테스트를 시작하기 전에 1회 실행하므로 메서드는 static 선언
static void beforeAll() {
System.out.println("Before All");
}
@BeforeEach // 테스트 케이스를 시작하기전 마다 실행
public void beforeEach() {
System.out.println("Before Each");
}
@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 //전체 테스트를 마치고 종료하기 전에 1회 실행하므로 메서드는 static으로 선언
static void afterAll() {
System.out.println("After All");
}
@AfterEach //테스트 케이스를 종료하기 전마다 실행
public void afterEach() {
System.out.println("After Each");
}
}
생명주기
다음과 같은 테스트 코드를 실행했을 때 다음과 같이 나온다.
@BeforeAll -> <@BeforeEach -> @Test -> @AfterEach (테스트 수 만큼 반복)> -> @AfterEach