어제 오늘 내일

[JUnit5] ConditionEvaluationResult.isEnabled()로 조건 결과 확인하기 본문

IT/JUnit

[JUnit5] ConditionEvaluationResult.isEnabled()로 조건 결과 확인하기

hi.anna 2026. 1. 28. 00:46

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 확장에서 조건 평가 결과를
명확히 식별하고 확장 로직에 반영해야 할 때 반드시 알아야 하는 핵심 메서드다.
단순히 테스트 실행 여부를 판단하는 것을 넘어,
테스트 프레임워크 수준에서 정교한 제어 로직을 구성하는 데 중요한 역할을 한다.

 

 

반응형
Comments