[JUnit5] Tag

안수진·2024년 2월 8일

JUnit

목록 보기
2/2
post-thumbnail

✅ Taging

테스트 그룹을 만들고 원하는 테스트 그룹만 테스트를 실행할 수 있는 기능

@Tag

  • 테스트 메소드에 태그를 추가할 수 있다
  • 하나의 테스트 메소드에 여러 태그를 사용할 수 있다

활용 예시

  • @Tag("fast")
    실행하는데 얼마 걸리지 않으며
    로컬에서 실행을 해도 충분히 금방 결과를 볼 수 있는 경우 테스트

    @Test
    @DisplayName("스터디 만들기 fast")
    @Tag("fast")
    void create_new_study(){
    
        Study study = new Study(100);
        assertThat(study.getLimit()).isGreaterThan(0);
    
    }
    
  • @Tag("slow")
    실행하는데 굉장히 오래 걸려 로컬에서 테스트하기 어렵고 Continuous Integration(CI)와 같이 전문적으로 빌드를 실행하는 그런 서버에서 빌드가 필요한 경우 테스트
    @Test
    @DisplayName("스터디 만들기 slow")
    @Tag("slow")
    void create_new_study_again(){
        System.out.println("create1");
    }

Filtering

intelliJ에서 특정 태그로 테스트 필터링 또한 가능하다.
Apache Maven
JUnit



✅ Custom Tag

JUnit이 제공하는 Annotation들은 Meta Annotation으로 사용할 수 있다.

JUnit5 Annotation을 조합하여 custom tag를 만들 수 있다.

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Test
@Tag("fast")
public @interface FastTest {

}
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Test
@Tag("slow")
public @interface SlowTest {

}

@Retention : 이 어노테이션을 사용한 코드가 이 어노테이션 정보를 runtime까지도 유지해야한다는 설정
@Target : 이 어노테이션을 어디에 쓸 수 있는가, 메서드에 쓰도록 설정

StudyTest.java

@DisplayName("스터디 만들기 fast")
@FastTest
void create_new_study(){
    Study study = new Study(100);
    assertThat(study.getLimit()).isGreaterThan(0);

}

@DisplayName("스터디 만들기 slow")
@SlowTest
void create_new_study_again(){
    System.out.println("create1");
}
profile
항상 궁금해하기

0개의 댓글