[Spring Boot 테스트] 시스템 환경(OS)별 테스트 비활성화

다람·2024년 12월 24일
0

오류 모음

목록 보기
9/9
post-thumbnail

문제 상황

프로젝트에서 이미지 관련 로직을 테스트하는 과정에서 Window 환경에서 개발한 코드는 Mac OS에서는 테스트가 실패하는 문제가 발생했습니다.

원인

이 문제는 주로 파일 시스템 경로나 특정 OS 전용 기능의 차이에서 발생하는 오류입니다.
Mac OS, Windows, Linux와 같은 OS 간의 환경 차이로 인해 테스트가 실패하는 것 입니다.
예를 들어서 Windows에서는 C드라이브 경로를 이용하지만 Mac OS에서는 파일 시스템 경로가 유닉스 기반 경로 구조를 따르고 있습니다.

  • 예시
    - Windows 환경: C:\images\test-image.jpg
    - Mac OS 환경: /Users/username/images/test-image.jpg

그래서 테스트를 특정 환경(Mac OS)에서만 비활성화하고, 다른 운영 체제에서는 정상적으로 수행하도록 조정이 필요했습니다.

해결방법

@DisabledIfSystemProperty 애너테이션을 사용하면 간단하게 해결할 수 있습니다.
JUnit 5에서는 시스템 속성을 기준으로 테스트를 비활성화할 수 있는 애너테이션인 @DisabledIfSystemProperty를 제공하고 있습니다.
이 애너테이션을 활용해서 특정 OS에서의 테스트를 건너뛰도록 할 수 있습니다.

@DisabledIfSystemProperty(named = "os.name", matches = "Mac OS X")
@Test
void test() throws Exception {
    
}

작동원리

  1. @DisabledIfSystemProperty는 JVM의 시스템 속성값을 확인하여 조건에 맞는 경우 테스트를 비활성화합니다.
  2. named는 확인할 시스템 속성 이름을 지정합니다.
  3. matches는 속성 값이 정규식으로 일치하는 경우를 지정합니다.
    • 여기서는 "Mac OS X"로 설정하여, Mac 환경에서만 테스트를 비활성화하도록 했습니다.

결과


profile
개발하는 다람쥐

0개의 댓글