어제 오늘 내일

[JUnit5] assumeFalse()로 조건 불만족 시 테스트 실행하기 본문

IT/JUnit

[JUnit5] assumeFalse()로 조건 불만족 시 테스트 실행하기

hi.anna 2026. 1. 19. 01:14

1. assumeFalse()

assumeFalse()는 JUnit5의 Assumptions 기능 중 하나로, 특정 조건이 거짓일 때만 테스트를 실행하도록 제어하는 역할을 한다.
조건이 참이라면 해당 테스트는 실패가 아닌 ‘Skipped(건너뛰기)’로 처리된다.
환경에 따라 실행 여부가 달라지는 테스트를 작성할 때 특히 유용하다.

 

2. 기본 사용법 예제

import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assumptions.*;
import static org.junit.jupiter.api.Assertions.*;

class AssumptionFalseTest {

    @Test
    void testRunWhenNotDev() {
        String env = System.getenv("APP_ENV");

        assumeFalse("dev".equals(env)); 
        // env가 "dev"이면 테스트는 실행되지 않고 스킵됨

        assertTrue(env != null); // dev 환경이 아닐 때만 실행됨
    }
}

설명

  • "dev".equals(env)가 참이면 테스트는 건너뛰기 처리된다.
  • dev 환경이 아닐 때만 실제 검증 코드가 동작한다.

 

3. 메시지를 함께 사용하는 방식

스킵 이유를 테스트 보고서에 명확히 남기고 싶다면 메시지를 추가하면 된다.

assumeFalse(isWindows(), "Windows 환경에서는 이 테스트를 실행하지 않습니다.");

설명

  • 실행 환경을 제한하는 문서를 남기는 데 유용하다.

 

4. 조건 로직을 메서드로 분리해 가독성 향상시키기

조건이 복잡하거나 재사용해야 한다면 메서드로 분리하는 것이 좋다.

@Test
void testWhenFeatureDisabled() {
    assumeFalse(isFeatureEnabled()); 
    // 기능 플래그가 꺼져 있을 때만 실행되는 테스트

    assertEquals("disabled", getFeatureState());
}

private boolean isFeatureEnabled() {
    // 예: 설정 파일, 환경 변수 등을 체크
    return false;
}

설명

  • 실제 테스트 목적을 더 명확하게 드러낼 수 있으며 유지보수에 용이하다.

 

5. assumeFalse()가 필요한 상황

  • 특정 OS에서는 실행하면 안 되는 테스트가 있을 때
  • 기능 플래그(Feature Flag)가 활성화되어 있으면 테스트가 무의미할 때
  • 특정 CI 환경에서는 테스트를 건너뛰어야 할 때
  • 외부 시스템이 특정 상태일 때 테스트 실행을 차단하고 싶을 때

즉, 조건이 만족되면 스킵해야 하는 테스트를 만들 때 사용하면 적합하다.

 

6. 함께 알아두면 좋은 Assumptions 기능

  • assumeTrue() — 조건이 참일 때 테스트 실행
  • assumingThat() — 조건부로 일부 테스트 코드만 실행하고 나머지는 계속 진행

환경 기반 테스트 제어를 깔끔하게 구성하고 싶을 때 큰 도움이 된다.

 

 

반응형
Comments