| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- list
- 단위테스트
- IntelliJ
- Java
- js
- 정규식
- Visual Studio Code
- vscode
- string
- javascript
- 문자열
- 자바
- 인텔리제이
- html
- Array
- Eclipse
- 자바스크립트
- java테스트
- ArrayList
- junit
- junit5
- HashMap
- 배열
- math
- json
- 자바문법
- SpringBoot
- 테스트자동화
- input
- CSS
- Today
- Total
어제 오늘 내일
[JUnit5] ConditionEvaluationResult.isEnabled()로 조건 결과 확인하기 본문
1. isEnabled()란 무엇인가
ConditionEvaluationResult.isEnabled()는 JUnit5 조건부 실행(Execution Condition) 기능에서 반환되는
ConditionEvaluationResult 객체가 테스트를 실행해야 하는지 여부를 확인하는 메서드다.
ExecutionCondition 확장에서 enabled() 또는 disabled()를 반환하면,
JUnit은 내부적으로 isEnabled()를 통해 실행 여부를 결정하며,
확장 코드에서도 결과 검사에 활용할 수 있다.
즉,
- true → 테스트 실행
- false → 테스트 스킵
테스트 조건 평가 로직을 커스터마이징할 때 매우 중요한 플래그이다.
2. 기본 사용 예제
ConditionEvaluationResult result = ConditionEvaluationResult.enabled("OK");
boolean enabled = result.isEnabled();
System.out.println("테스트 실행 여부: " + enabled);
출력:
테스트 실행 여부: true
반대로 disabled일 경우:
ConditionEvaluationResult result = ConditionEvaluationResult.disabled("환경 미충족");
System.out.println(result.isEnabled()); // false
3. ExecutionCondition 내부에서 isEnabled()를 활용하는 예
대부분의 ExecutionCondition 구현에서는 enabled() 또는 disabled()를 그대로 반환하지만,
확장 내부에서 추가적인 로직을 위해 isEnabled()를 직접 확인할 수도 있다.
import org.junit.jupiter.api.extension.*;
public class LoggingCondition implements ExecutionCondition {
@Override
public ConditionEvaluationResult evaluateExecutionCondition(ExtensionContext context) {
boolean match = context.getDisplayName().contains("Run");
ConditionEvaluationResult result = match
? ConditionEvaluationResult.enabled("이름 조건 충족")
: ConditionEvaluationResult.disabled("조건 불충족");
// 추가 로깅 목적
System.out.println("조건 평가 결과: " + result.isEnabled());
return result;
}
}
설명
- 조건 평가 결과를 기반으로 확장 내부에서 별도의 처리를 할 수 있다.
- 로깅, 통계 수집, 실행 흐름 분석 등에 유용하다.
4. 조건 메타데이터를 이용한 제어 패턴
isEnabled()를 활용하면 더 복잡한 조건 조합을 구현할 수 있다.
✔ 여러 조건을 직접 조합하기
ConditionEvaluationResult osCheck =
System.getProperty("os.name").startsWith("Windows")
? ConditionEvaluationResult.enabled("OS OK")
: ConditionEvaluationResult.disabled("OS 미지원");
ConditionEvaluationResult envCheck =
"prod".equals(System.getenv("APP_ENV"))
? ConditionEvaluationResult.enabled("ENV OK")
: ConditionEvaluationResult.disabled("ENV 미충족");
boolean runTest = osCheck.isEnabled() && envCheck.isEnabled();
활용 포인트
- JUnit이 자동으로 해주는 조건 결합 외에, 확장 자체에서 추가 제어를 하고 싶을 때 유용하다.
5. isEnabled()가 필요한 상황 요약
다음과 같은 경우에 확장에서 isEnabled()를 직접 확인하는 패턴이 자주 쓰인다.
- 조건 평가 로그를 남기고 싶을 때
- 여러 조합된 조건을 기반으로 세밀한 확장 제어가 필요할 때
- 조건 결과에 따라 후속 처리(캐시 저장, 타이머 종료, 진단 정보 출력 등)를 추가하고 싶을 때
- 조건 평가 흐름을 테스트하거나 디버깅할 때
ExecutionCondition은 보통 결과만 반환하면 되지만,
고급 확장 개발에서는 isEnabled()를 통해 내부적으로 더 복잡한 제어 흐름을 구성할 수 있다.
6. enabled/disabled/isEnabled 비교 정리
| 메서드 | 역할 | 리턴값 |
| ConditionEvaluationResult.enabled(reason) | 조건 충족, 테스트 실행 허용 | ConditionEvaluationResult |
| ConditionEvaluationResult.disabled(reason) | 조건 불충족, 테스트 스킵 | ConditionEvaluationResult |
| isEnabled() | enabled인지 여부를 boolean으로 확인 | true / false |
📌 결론
ConditionEvaluationResult.isEnabled()는 ExecutionCondition 확장에서 조건 평가 결과를
명확히 식별하고 확장 로직에 반영해야 할 때 반드시 알아야 하는 핵심 메서드다.
단순히 테스트 실행 여부를 판단하는 것을 넘어,
테스트 프레임워크 수준에서 정교한 제어 로직을 구성하는 데 중요한 역할을 한다.
'IT > JUnit' 카테고리의 다른 글
| [JUnit5] ConditionEvaluationResult.isDisabled()로 조건 비활성화 판정하기 (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 |
