ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 테스트 이름 표시하기
    테스트/Junit5 2021. 1. 28. 14:11

    Junit5 테스트를 실시할 때, 메서드의 이름 대신 사용자가 정의한 전략과 이름에 따라 테스트 이름을 지정해 줄 수 있다.

    가장 대표적인 방법은 다음과 같다.

     

    1. @DisplayNameGeneration

    • 클레스에 적용하는 어노테이션이다.
    • 이 어노테이션을 이용해 전략을 설정하고 테스트 클레스에 적용하면 해당 클레스에 있는 테스트 메서드에게 테스트 이름에 대한 전략이적용된다. -> 구체적인 사용 방법은 밑에 소스코드를 참조하자.
    • 기본 구현체로 ReplaceUnderscores 제공한다. -> 메서드 이름중 '_(언더바)'을 공백으로 바꾸어주는 전략 

     

    2.@DisplayName 

    • 테스트 메서드 이름보다 쉽게 표현할 수 있는 방법을 제공해주는 어노테이션으로써 주로 메서드와 클레스에 적용한다.
    • @DisplayNameGeneration보다 우선순위가 높다.

    예제코드 1.  @DisplayName을 사용하지 않은 테스트 코드소스.

    package com.example.junittest;
    
    import org.junit.jupiter.api.*;
    
    import static org.junit.jupiter.api.Assertions.*;
    
    class StudyTest {
    
        @Test
        void create_new_study_test() {
            Study study = new Study();
            assertNotNull(study);
            System.out.println("create");
        }
        @Test
        void create_new_study_test_again(){
            System.out.println("create1");
    
        }
        @Test
        @Disabled
        void create2(){
            System.out.println("create2");
        }
        @BeforeAll
        static void beforeall(){
            System.out.println("BEFOREALL");
        }
        @AfterAll
        static void afterall(){
            System.out.println("AFTERALL");
        }
        @BeforeEach
        void beforeeach(){
            System.out.println("BEFORE_EACH");
        }
        @AfterEach
        void aftereach(){
            System.out.println("AFTER_EACH");
        }
    }

     

    결과를 보면 메서드 이름 그대로 출력되는 것을 알 수 있다.


    예제코드2. @DisplayNameGeneration 어노테이션을 사용한 방법

    package com.example.junittest;
    
    import org.junit.jupiter.api.*;
    
    import static org.junit.jupiter.api.Assertions.*;
    @DisplayNameGeneration(DisplayNameGenerator.ReplaceUnderscores.class)
    class StudyTest {
    
        @Test
        void create_new_study_test() {
            Study study = new Study();
            assertNotNull(study);
            System.out.println("create");
        }
        @Test
        void create_new_study_test_again(){
            System.out.println("create1");
    
        }
        @Test
        @Disabled
        void create2(){
            System.out.println("create2");
        }
        @BeforeAll
        static void beforeall(){
            System.out.println("BEFOREALL");
        }
        @AfterAll
        static void afterall(){
            System.out.println("AFTERALL");
        }
        @BeforeEach
        void beforeeach(){
            System.out.println("BEFORE_EACH");
        }
        @AfterEach
        void aftereach(){
            System.out.println("AFTER_EACH");
        }
    }

    결과를 보면 테스트 이름이 _(언더바) 대신 공백으로 바뀐 것을 확인 할 수 있다.

    사용방법은 다음과 같다.

    @DisplayNameGeneration(실체 구현체) 

    실체 구현체는  DisplayNameGenerator 인터페이스 내 static 메서드로 구현된 ReplaceUnderscores를 사용한다.


    예제코드3. @DisplayName 

    package com.example.junittest;
    
    import org.junit.jupiter.api.*;
    
    import static org.junit.jupiter.api.Assertions.*;
    @DisplayNameGeneration(DisplayNameGenerator.ReplaceUnderscores.class)
    class StudyTest {
    
        @Test
        @DisplayName("스터디 만들기☺️")
        void create_new_study_test() {
            Study study = new Study();
            assertNotNull(study);
            System.out.println("create");
        }
        @Test
        @DisplayName("다시 만들기☺️")
        void create_new_study_test_again(){
            System.out.println("create1");
    
        }
        @Test
        @Disabled
        void create2(){
            System.out.println("create2");
        }
        @BeforeAll
        static void beforeall(){
            System.out.println("BEFOREALL");
        }
        @AfterAll
        static void afterall(){
            System.out.println("AFTERALL");
        }
        @BeforeEach
        void beforeeach(){
            System.out.println("BEFORE_EACH");
        }
        @AfterEach
        void aftereach(){
            System.out.println("AFTER_EACH");
        }
    }

    @DisplayName 어노테이션은 표현하고 싶은 테스트 이름을 설정해준다. 신기한 점은 이모티콘도 사용이 가능하단 점이다.


    예제코드3. 클레스에 @DisplayName 어노테이션 적용하기

    package com.example.junittest;
    
    import org.junit.jupiter.api.*;
    
    import static org.junit.jupiter.api.Assertions.*;
    @DisplayName("스터디 클레스")
    class StudyTest {
    
        @Test
        @DisplayName("스터디 만들기☺️")
        void create_new_study_test() {
            Study study = new Study();
            assertNotNull(study);
            System.out.println("create");
        }
        @Test
        @DisplayName("다시 만들기☺️")
        void create_new_study_test_again(){
            System.out.println("create1");
    
        }
        @Test
        @Disabled
        void create2(){
            System.out.println("create2");
        }
        @BeforeAll
        static void beforeall(){
            System.out.println("BEFOREALL");
        }
        @AfterAll
        static void afterall(){
            System.out.println("AFTERALL");
        }
        @BeforeEach
        void beforeeach(){
            System.out.println("BEFORE_EACH");
        }
        @AfterEach
        void aftereach(){
            System.out.println("AFTER_EACH");
        }
    }

     

    클레스에도 Displayname 어노테이션을 적용한 결과이다.

    '테스트 > Junit5' 카테고리의 다른 글

    조건에 따라 테스트 실행하기  (0) 2021.02.02
    Assertion API  (0) 2021.01.28
    Junit 기본 어노테이션  (0) 2021.01.27
    Junit5 시작하기  (0) 2021.01.27
    Junit에 대해서  (0) 2021.01.27
Designed by Tistory.