JUnit annotation

432421412·2023년 7월 23일
0
import org.junit.jupiter.api.*;

public class JUnitCycleTest {
    @BeforeAll // 전체 테스트를 시작하기 전에 1회 실행하므로 메서드는 static으로 선언
    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 // 전체 테스트를 마치고 종료하기 전에 1회 실행하므로 메서드는 static으로 선언
    static void afterAll(){
        System.out.println("@AfterAll");
    }

    @AfterEach // 테스트 케이스를 종료하기 전마다 실행
    public void afterEach(){
        System.out.println("@AfterEach");
    }
}

@BeforeAll

  • 전체 테스트를 시작하기 전에 처음으로 한 번만 실행한다.

  • ex) DB에 연결하거나 테스트 환경을 초기화할 때 사용한다.

  • 전체 테스트 실행 주기에서 한 번만 호출되어야 하기 때문에 메서드를 static으로 선언해야 한다.


@BeforeEach

  • 테스트 케이스를 시작하기 전에 매번 실행한다.

  • ex) 테스트 메서드에서 사용하는 객체를 초기화

  • ex) 테스트에 필요한 값을 미리 넣을 때 사용

  • 각 인스턴스에 대해 메서드를 호출해야 하므로 메서드는 static이 아니어야 한다.


@AfterAll

  • 전체 테스트를 마치고 종료하기 전에 한 번만 실행한다.

  • ex) DB 연결을 종료

  • ex) 공통적으로 사용하는 자원을 해제할 때 사용

  • 전체 테스트 실행 주기에서 한 번만 호출되어야 하므로 메서드는 static


@AfterEach

  • 각 테스트 케이스를 종료하기 전 매번 실행한다.

  • ex) 테스트 이후에 특정 데이터를 삭제해야 하는 경우

  • 메서드는 static이면 안됨.


콘솔 결과

@BeforeAll
@BeforeEach
test1
@AfterEach
@BeforeEach
test2
@AfterEach
@BeforeEach
test3
@AfterEach
@AfterAll

profile
HeeYun's programming study

1개의 댓글

comment-user-thumbnail
2023년 7월 23일

좋은 글 감사합니다. 자주 올게요 :)

답글 달기