어제 오늘 내일

[JUnit5] ConditionEvaluationResult.isDisabled()로 조건 비활성화 판정하기 본문

IT/JUnit

[JUnit5] ConditionEvaluationResult.isDisabled()로 조건 비활성화 판정하기

hi.anna 2026. 1. 28. 08:47

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 진단, 리포트 생성 등
다양한 고급 테스트 자동화 기능을 구현하는 데 활용된다.

 

 

반응형
Comments