반응형
Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
Tags
- Eclipse
- 자바문법
- math
- json
- junit
- js
- list
- input
- javascript
- Java
- CSS
- 이클립스
- html
- IntelliJ
- 자바
- java테스트
- Array
- 테스트자동화
- 단위테스트
- vscode
- string
- 문자열
- HashMap
- 자바스크립트
- ArrayList
- Visual Studio Code
- 인텔리제이
- junit5
- 배열
- 정규식
Archives
- Today
- Total
어제 오늘 내일
[JUnit5] assumeTrue()로 조건 만족 시 테스트 실행하기 본문
1. assumeTrue()
assumeTrue()는 JUnit5의 Assumptions 기능 중 하나로, 특정 조건이 참일 때만 테스트를 실행하도록 제어할 때 사용한다. 조건이 거짓이면 테스트는 **실패가 아니라 ‘Skipped(건너뛰기)’**로 처리되며, 이는 환경 의존적인 테스트를 작성할 때 특히 유용하다.
예를 들어 운영체제가 Windows일 때만 실행하거나, 특정 시스템 프로퍼티가 설정된 경우에만 실행하도록 만들 수 있다.
2. 기본 사용법 예제
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
import static org.junit.jupiter.api.Assumptions.*;
class AssumptionTest {
@Test
void testRunOnlyOnProd() {
String env = System.getenv("APP_ENV");
assumeTrue("prod".equals(env)); // 조건이 false면 테스트는 실행되지 않음
assertTrue(env.length() > 0); // 위 조건이 true일 때만 실행
}
}
설명
- assumeTrue("prod".equals(env))가 참이면 아래 테스트 코드가 실행된다.
- 참이 아니면 테스트는 건너뛰기(Skipped) 처리되며 실패하지 않는다.
3. 메시지를 함께 사용하는 방식
테스트가 건너뛰어진 이유를 명확하게 남기려면 메시지를 함께 전달할 수 있다.
assumeTrue(isLinux(), "이 테스트는 Linux에서만 실행됩니다.");
설명
- 두 번째 인자는 테스트 스킵 이유를 문서처럼 남길 때 유용하다.
4. 조건을 메서드로 분리해 가독성 높이기
조건이 복잡해지면 별도의 메서드로 분리해 테스트 목적을 더 명확하게 표현할 수 있다.
@Test
void testOnlyWhenServiceAvailable() {
assumeTrue(isServiceUp());
// 서비스가 정상 동작 중일 때만 이 테스트가 실행됨
assertEquals("OK", callService());
}
private boolean isServiceUp() {
// 예: 외부 시스템 Ping, 환경 변수 등 확인
return true;
}
5. assumeTrue()를 활용해야 하는 상황
- 운영체제(OS)에 따라 테스트 실행 여부가 달라질 때
- 특정 환경 변수, 시스템 프로퍼티가 필요한 테스트
- 네트워크·외부 서비스 의존 테스트를 선택적으로 실행하고 싶을 때
- CI 환경 여부에 따라 일부 테스트를 건너뛰고 싶을 때
assert 계열 메서드는 실패를 의미하지만, Assumptions는 테스트 실행 조건을 제어하는 도구라는 점을 기억하면 좋다.
6. 추가로 알아두면 좋은 Assumptions 기능
assumeTrue() 외에도 다음과 같은 메서드들이 있다.
- assumeFalse() — 조건이 거짓일 때만 테스트 실행
- assumingThat() — 조건에 따라 일부 코드만 실행하고 나머지는 그대로 진행
이런 기능을 조합하면 환경 기반 테스트 로직을 깔끔하게 유지할 수 있다.
반응형
'IT > JUnit' 카테고리의 다른 글
| [JUnit5] assumingThat()으로 부분 조건부 테스트 처리 (0) | 2026.01.19 |
|---|---|
| [JUnit5] assumeFalse()로 조건 불만족 시 테스트 실행하기 (0) | 2026.01.19 |
| [JUnit5] ConditionEvaluationResult로 조건 평가 결과 처리하기 (0) | 2026.01.18 |
| [JUnit5] ExtensionContext로 테스트 실행 컨텍스트 다루기 (0) | 2026.01.17 |
| [JUnit5] BeforeEachCallback·AfterEachCallback 확장 포인트 이해 (0) | 2026.01.17 |
Comments
