| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- input
- 인텔리제이
- IntelliJ
- math
- 자바문법
- Visual Studio Code
- js
- 정규식
- Java
- SpringBoot
- Array
- 단위테스트
- 자바
- string
- list
- 배열
- html
- 테스트자동화
- 문자열
- javascript
- CSS
- 자바스크립트
- Eclipse
- junit5
- json
- junit
- HashMap
- ArrayList
- java테스트
- vscode
- Today
- Total
어제 오늘 내일
[JUnit5] ConditionEvaluationResult.isDisabled()로 조건 비활성화 판정하기 본문
1. isDisabled()란 무엇인가
ConditionEvaluationResult.isDisabled()는 JUnit5의 Execution Condition(조건부 테스트 실행 제어)에서,
현재 조건 결과가 테스트 비활성화(disabled) 상태인지 여부를 확인하는 메서드다.
ExecutionCondition은 테스트를 실행할지 여부를 결정하기 위해
ConditionEvaluationResult.enabled() 혹은 ConditionEvaluationResult.disabled()를 반환하게 되는데,
isDisabled()는 그 결과가 disabled인지(boolean) 판정하는 간단하면서도 중요한 도우미 메서드다.
즉,
- true → 테스트가 스킵되어야 함
- false → 테스트 실행 가능
2. 기본 사용 예제
ConditionEvaluationResult result =
ConditionEvaluationResult.disabled("환경 조건 불충족");
boolean disabled = result.isDisabled();
System.out.println("테스트 비활성화 여부: " + disabled);
출력
테스트 비활성화 여부: true
enabled일 경우:
ConditionEvaluationResult result =
ConditionEvaluationResult.enabled("조건 충족");
System.out.println(result.isDisabled()); // false
3. ExecutionCondition 구현에서 isDisabled() 활용하기
확장을 통해 조건 평가를 할 때, 내부 로직에서 비활성화 여부에 따라 부가 처리를 하고 싶은 경우가 있다.
import org.junit.jupiter.api.extension.*;
public class LoggingCondition implements ExecutionCondition {
@Override
public ConditionEvaluationResult evaluateExecutionCondition(ExtensionContext context) {
boolean match = context.getDisplayName().contains("Skip");
ConditionEvaluationResult result = match
? ConditionEvaluationResult.disabled("이름에 Skip이 포함됨")
: ConditionEvaluationResult.enabled("실행 가능");
if (result.isDisabled()) {
System.out.println("⚠ 테스트가 비활성화됩니다: " + context.getDisplayName());
}
return result;
}
}
활용 포인트
- disabled 조건을 로깅
- 모니터링 또는 진단 데이터 축적
- 테스트 스킵 사유 분류
4. 조건을 조합할 때 isDisabled()를 직접 활용하는 패턴
JUnit은 복수 ExecutionCondition을 자동 결합하지만, 확장 내부에서도 조합된 로직을 만들 수 있다.
ConditionEvaluationResult osCheck =
System.getProperty("os.name").startsWith("Linux")
? ConditionEvaluationResult.enabled("Linux OK")
: ConditionEvaluationResult.disabled("Linux 환경 아님");
ConditionEvaluationResult envCheck =
"stage".equals(System.getenv("APP_ENV"))
? ConditionEvaluationResult.enabled("ENV OK")
: ConditionEvaluationResult.disabled("ENV 불일치");
boolean shouldSkip = osCheck.isDisabled() || envCheck.isDisabled();
결과:
- 하나라도 disabled → 전체 조건 스킵이라는 논리를 직접 구현 가능
5. disabled()와 isDisabled()의 차이 정리
| 메서드 | 역할 | 리턴값 |
| ConditionEvaluationResult.disabled(reason) | 테스트 비활성화 결과 생성 | ConditionEvaluationResult |
| isDisabled() | 해당 결과가 disabled인지 검사 | true / false |
둘의 역할은 명확히 다르다.
disabled()는 결과 생성,
isDisabled()는 결과 판정이다.
6. isDisabled()가 중요한 이유
ExecutionCondition은 테스트 discovery 단계에서 실행되므로,
disabled 상태를 빠르게 감지하여 다음과 같은 확장 처리를 할 수 있다.
- 테스트 스킵 사유 기록
- 특정 조건 불일치 시 추가 자원 초기화 생략
- 비활성화된 테스트 목록을 외부 리포트로 전송
- CI 환경에서 스킵된 테스트 수를 통계로 활용
즉, 테스트 실행 이전에 필요한 “고급 전처리”를 수행할 수 있게 해준다.
7. 대표 활용 예 — 스킵된 테스트 목록 출력
public class SkipWatcherCondition implements ExecutionCondition {
@Override
public ConditionEvaluationResult evaluateExecutionCondition(ExtensionContext context) {
boolean enabled = Math.random() > 0.5;
ConditionEvaluationResult result = enabled
? ConditionEvaluationResult.enabled("랜덤 활성화")
: ConditionEvaluationResult.disabled("랜덤 비활성화");
if (result.isDisabled()) {
System.out.println("⛔ 스킵된 테스트: " + context.getDisplayName());
}
return result;
}
}
설명
- 조건 결과가 disabled일 때만 스킵 로그를 출력
- 테스트 관리에 필요한 진단 정보를 확장에서 중앙화할 수 있음
📌 결론
ConditionEvaluationResult.isDisabled()는 ExecutionCondition 확장에서
테스트 비활성화 여부를 명확하게 판별하는 핵심 메서드로,
조건 기반 테스트 제어, 스킵 로깅, CI 진단, 리포트 생성 등
다양한 고급 테스트 자동화 기능을 구현하는 데 활용된다.
'IT > JUnit' 카테고리의 다른 글
| [JUnit5] ConditionEvaluationResult.isEnabled()로 조건 결과 확인하기 (0) | 2026.01.28 |
|---|---|
| [JUnit5] ConditionEvaluationResult.disabled() 활용하기 (0) | 2026.01.27 |
| [JUnit5] ConditionEvaluationResult.enabled() 사용법 (0) | 2026.01.27 |
| [JUnit5] ExtensionContext.getStore()로 데이터 저장하고 가져오기 (0) | 2026.01.26 |
| [JUnit5] ExtensionContext.getTestMethod()로 메소드 정보 조회 (0) | 2026.01.26 |
