-
테스트 이름 표시하기테스트/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