Spring Boot

[Spring] Junit5 단위 테스트 작성

HEY__ 2022. 7. 13. 13:46
728x90

이 글은 공부를 하면서 알게 된 내용들을 기록하는 글 입니다. 오류나 고쳐야 할 사항들이 있다면 지적 부탁드립니다!

⛅️ 단위 테스트

우리가 개발한 기능이 원래의 의도대로 작동하는지 검증할 수 있는 방법 중 하나이다.

테스트의 종류에는 Unit test(단위 테스트), Integration Test(통합 테스트), UI Test가 있는데, 그 중 단위 테스트는 규모가 제일 작은 테스트이다.

 

클래스 범주 내에 작은(함수) 단위의 기능이 의도대로 동작하는지 유효성을 검증하는 테스트단위테스트이다.

단위 테스트를 통해 해당 기능에 대한 신뢰도를 높일 수 있으며, 규모가 작기 때문에 빠르게 실행된다.

 

 


⛅️ @Test, @DisplayName

1. @Test

@Test를 적으면 메서드를 테스트 메서드로 인식하고, 단일 실행할 수 있게 된다.

@Test
void test1(){
    System.out.println("test1");
}

메서드의 왼쪽에 보면 실행 핀이 보이게 되는데, 실행핀을 누르면 단일 테스트가 실행된다.

테스트 메서드 작성

초록색 불이 뜬다면 테스트가 성공했다는 뜻이고, 붉은색 불이 뜬다면 테스트에 실패했다는 뜻이다.

단일 테스트 성공

 

2. @DisplayName

@DisplayName은 테스트 결과에 뜨는 이름을 설정할 수 있는 어노테이션이다.

테스트 결과에 뜨길 원하는 내용이 있다면 @DisplayName()의 인자로 전달하면 된다.

 

예를 들어 test1()의 결과 창에 "테스트 메서드 1" 이라고 뜨게 하고싶다면, 밑과 같이 적으면 된다.

@Test
@DisplayName("테스트 메서드 1")
void test1(){
    System.out.println("test1");
}

 

@DisplayName을 통한 설정

 


⛅️ @BeforeAll, @BeforeEach

1. @BeforeAll

테스트를 시작하기 전에 단 한번 실행되며, static으로 선언해야 한다.

class AnnotationTest {
    @BeforeAll
    static void beforeAll(){
        System.out.println("beforeAll");
    }

    @Test
    void test1(){
        System.out.println("test1");
    }

    @Test
    void test2(){
        System.out.println("test2");
    }
}

테스트 실행 결과

 

 

2. @BeforeEach

각각의 테스트를 실행하기 전에 실행하는 메서드임을 표시한다.

class AnnotationTest {
    @BeforeEach
    void beforeEach(){
        System.out.println("beforeEach");
    }

    @Test
    void test1(){
        System.out.println("test1");
    }

    @Test
    void test2(){
        System.out.println("test2");
    }
}

 

 

 


⛅️ @AfterAll, @AfterEach

1. @AfterAll

모든 테스트 메서드가 끝난 후, 단 한 번 실행된다.

class AnnotationTest {

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

    @Test
    void test1(){
        System.out.println("test1");
    }

    @Test
    void test2(){
        System.out.println("test2");
    }
}

 

 

 

2. @AfterEach

각각의 테스트 메서드가 끝날 때마다 실행된다.

class AnnotationTest {

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

    @Test
    void test1(){
        System.out.println("test1");
    }

    @Test
    void test2(){
        System.out.println("test2");
    }
}

 


⛅️ @Disabled

테스트 클래스/메서드를 비활성화한다.

class AnnotationTest {

    @Test
    void test1(){
        System.out.println("test1");
    }

    @Test
    @Disabled
    void test2(){
        System.out.println("test2");
    }

    @Test
    void test3(){
        System.out.println("test3");
    }
}

 

 

728x90