반응형
Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- json
- 배열
- javascript
- 인텔리제이
- vscode
- 정규식
- 자바스크립트
- HashMap
- input
- java테스트
- Java
- list
- junit5
- Array
- IntelliJ
- CSS
- 자바
- Visual Studio Code
- Eclipse
- 테스트자동화
- string
- html
- 이클립스
- ArrayList
- 자바문법
- 단위테스트
- js
- 문자열
- junit
- math
Archives
- Today
- Total
어제 오늘 내일
[JUnit5] TestInfo.getTags()로 태그 메타데이터 조회하기 본문
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이다.
반응형
'IT > JUnit' 카테고리의 다른 글
| [JUnit5] TestInfo.getTestMethod()로 테스트 메소드 정보 확인하기 (1) | 2026.01.21 |
|---|---|
| [JUnit5] TestInfo.getTestClass()로 테스트 클래스 정보 얻기 (0) | 2026.01.21 |
| [JUnit5] TestInfo.getDisplayName() 사용 가이드 (0) | 2026.01.20 |
| [JUnit5] assumingThat()으로 부분 조건부 테스트 처리 (0) | 2026.01.19 |
| [JUnit5] assumeFalse()로 조건 불만족 시 테스트 실행하기 (0) | 2026.01.19 |
Comments
