어제 오늘 내일

[JUnit5] TestInfo.getTags()로 태그 메타데이터 조회하기 본문

IT/JUnit

[JUnit5] TestInfo.getTags()로 태그 메타데이터 조회하기

hi.anna 2026. 1. 20. 08:15

1. TestInfo.getTags()란 무엇인가

TestInfo는 JUnit5에서 테스트 메타데이터(테스트 이름, 디스플레이 네임, 태그 등)를 제공하는 객체이며, 각 테스트 메서드에 파라미터로 주입할 수 있다.
그중 getTags()는 테스트에 선언된 모든 태그(@Tag)를 Set 형태로 조회하는 메서드다.
테스트 실행 중 현재 테스트가 어떤 분류에 속하는지 확인할 때 유용하다.

 

2. 기본 사용 예제

import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestInfo;

class TagInfoTest {

    @Test
    @Tag("integration")
    @Tag("slow")
    void testWithTags(TestInfo testInfo) {
        System.out.println("지정된 태그: " + testInfo.getTags());
    }
}

설명

  • @Tag를 여러 개 선언할 수 있다.
  • testInfo.getTags()는 ["integration", "slow"]를 포함하는 Set을 반환한다.

출력 예:

지정된 태그: [integration, slow]

 

3. 태그 기반 조건 분기 처리

테스트 실행 중 태그를 읽어 로직을 다르게 처리할 수 있다.

@Test
@Tag("critical")
void criticalTest(TestInfo testInfo) {
    if (testInfo.getTags().contains("critical")) {
        System.out.println("중요 테스트 실행 중...");
    }

    // 실제 테스트 코드
}

활용 포인트

  • 중요 테스트, 느린 테스트 등을 구분해 로깅
  • 태그 기반 테스트 실행 전략 구현
  • 테스트 문서화 수준 향상

 

4. 태그를 이용한 환경 제어 패턴

특정 태그가 있으면 환경 체크를 수행하고, 없으면 간단한 로직만 실행하도록 만들 수도 있다.

@Test
@Tag("db")
void databaseTest(TestInfo testInfo) {
    if (testInfo.getTags().contains("db")) {
        // DB 환경이 필요함
        assertTrue(isDatabaseReady());
    }

    assertTrue(true); // 공통 검증
}

private boolean isDatabaseReady() {
    return true; // 예: 실제 DB 연결 체크
}

설명

  • 태그를 기준으로 어떤 자원을 준비해야 하는지 자동 판단하는 패턴이다.
  • 테스트 환경 의존도를 낮출 수 있다.

 

5. @Tag 조합과 getTags() 활용 예시

여러 태그를 조합할수록 테스트 성격을 명확히 분류할 수 있다.

@Test
@Tag("api")
@Tag("performance")
void apiPerformanceTest(TestInfo testInfo) {
    Set<String> tags = testInfo.getTags();
    System.out.println("현재 테스트 태그: " + tags);

    if (tags.contains("performance")) {
        runPerformanceCheck();
    }
}

private void runPerformanceCheck() {
    // 성능 관련 검증 로직
}

활용 패턴

  • API 테스트, 성능 테스트, 통합 테스트 구분
  • CI 파이프라인에서 특정 태그만 선택 실행할 때 적합
  • 여러 분류 기준을 하나의 테스트 메서드에 자연스럽게 반영 가능

 

6. getTags()를 쓰면 좋은 상황 요약

  • 테스트 실행 중 태그를 기반으로 로직을 변경해야 할 때
  • 테스트 성격(단위, 통합, 성능, 데몬 등)을 런타임 메타데이터로 읽어야 할 때
  • 로그나 테스트 리포트에 태그 정보를 포함시키고 싶을 때
  • 테스트 환경 준비를 태그 기반으로 자동화할 때

태그는 테스트를 체계적으로 구성하는 데 핵심적인 요소이며, getTags()는 태그 기반 테스트 전략을 구축하는 데 매우 유용한 API이다.

 

 

반응형
Comments