Spring, Spring boot

테스트 코드 애너테이션 종류

ron_nie 2023. 10. 13. 13:14
728x90

@BeforeAll

전체 테스트를 진행하기 전에 처음으로 한번 실행됨
예를 들어서 데이터 베이스를 연결해야 하거나 테스트 환경을 조성할때 사용한다 이 애너테이션은 전체 테스트 실행주기에서 한 번만 호출되어야 하기 때문에 static 매서드를 사용한다

@BeforeEach

테스트 케이스를 시작하기 전에 매번 실행
예를 들어서 테스트 메서드에서 사용하는 객체를 초기화 하거나 테스트에 필요한 값을 미리 넣을 때 사용할 수 있습니다. 각 인스턴스에 대해 메서드를 호출해야 하므로 메서드는 static이 아니어야 합니다.

@AfterAll

전체 테스트를 마치고 종료하기 전에 한 번만 실행합니다. 예를 들어 데이터 베이스 연결을 종료할 때나 공통적으로 사용하는 자원을 해제할 때 사용할 수 있습니다. 전체 테스트 실행주기에서 한 번만 호출되어야 하므로 메서드를 static으로 선언해야 합니다.

@AfterEach

각 테스트 케이스를 종료하기 전 매번 실행합니다. 예를 들어 테스트 이후에 특정 데이터를 삭제해야하는 경우 사용합니다. static 메서드가 아니어야 합니다

코드

import org.junit.jupiter.api.*;

public class JUnitCycleTest {
    @BeforeAll // 전체 테스트를 시작하기 전에 1회 실행 -> 메서드는 static으로 선언
    static void beforeAll(){
        System.out.println("JUnitCycleTest.beforeAll");
    }

    @BeforeEach // 테스트 케이스를 시작하기 전마다 실행
    public void beforeEach(){
        System.out.println("JUnitCycleTest.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("JUnitCycleTest.AfterAll");
    }

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


    // 결과
    /*
    JUnitCycleTest.beforeAll // 시작하기 전 한번 실행
    JUnitCycleTest.beforeEach // 시작할때 마다 실행
    test1
    JUnitCycleTest.afterEach // 끝나고 한번 실행
    JUnitCycleTest.beforeEach
    test2
    JUnitCycleTest.afterEach
    JUnitCycleTest.beforeEach
    test3
    JUnitCycleTest.afterEach
    JUnitCycleTest.AfterAll // 전부 끝나고 한번 실행
    * */
}
반응형