이번 포스팅에선 JUnit 5에서 OS 종류, JAVA 버전, 시스템 환경변수 별 테스트하는 방법에 대해 알아보겠습니다.
@EnabledOnOs, @DisabledOnOs
OS 환경 별 테스트 할 수 있게 해주는 어노테이션
파라미터명 | 타입 | 설명 |
value | OS[] | 테스트 OS LINUX MAC SOLARIS WINDOWS OTHER |
disabledReason | String | disabled 이유 @Disabled 사용했을 경우 사용 |
예제
@EnabledOnOs(OS.WINDOWS)를 자주 사용한다면 @Test와 @EnabledOnOs(OS.WINDOWS)를 합쳐 @TestOnWindows로 사용할 수 있습니다.
package com.effortguy.junit5;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.condition.DisabledOnOs;
import org.junit.jupiter.api.condition.EnabledOnOs;
import org.junit.jupiter.api.condition.OS;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
public class EnabledOnOsAnnotation {
@Test
@EnabledOnOs(OS.WINDOWS)
void testEnabledOnOsWindows() {
}
@TestOnWindows
void testEnabledOnOsWindows2() {
}
@Test
@EnabledOnOs({OS.MAC, OS.LINUX})
void testEnabledOnOsMacAndLinux() {
}
@Test
@DisabledOnOs(value = {OS.WINDOWS}, disabledReason = "test")
void testDisabledOnOs() {
}
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Test
@EnabledOnOs(OS.WINDOWS)
@interface TestOnWindows {
}
}
결과
@EnabledOnJre, @DisabledOnJre
JRE 환경 별 테스트 할 수 있게 해주는 어노테이션
파라미터명 | 타입 | 설명 |
value | JRE[] | 테스트 JRE JAVA_8 JAVA_9 JAVA_10 JAVA_11 JAVA_12 JAVA_13 JAVA_14 JAVA_15 JAVA_16 OTHER |
disabledReason | String | disabled 이유 @Disabled 사용했을 경우 사용 |
@EnabledOnJreRange
JRE 버전 범위로 테스트 할 수 있게 해주는 어노테이션
파라미터명 | 타입 | 설명 |
min | JRE | 테스트할 최소 JRE 버전 |
max | JRE | 테스트할 최대 JRE 버전 |
disabledReason | String | disabled 이유 @Disabled 사용했을 경우 사용 |
예제
JRE 8 에서 테스트 진행
package com.effortguy.junit5;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.condition.DisabledOnJre;
import org.junit.jupiter.api.condition.EnabledForJreRange;
import org.junit.jupiter.api.condition.EnabledOnJre;
import org.junit.jupiter.api.condition.JRE;
public class EnabledOnJreAnnotation {
@Test
@EnabledOnJre(JRE.JAVA_8)
public void testEnabledOnJreJava8() {
}
@Test
@EnabledOnJre({JRE.JAVA_9, JRE.JAVA_10})
public void testEnabledOnJreJava9And10() {
}
@Test
@DisabledOnJre(value = {JRE.JAVA_8}, disabledReason = "test")
public void testDisabledOnJreJava8() {
}
@Test
@EnabledForJreRange(min = JRE.JAVA_8, max =JRE.JAVA_12)
public void testEnabledForJreRange() {
}
}
결과
@EnabledIfSystemProperty, @DisabledIfSystemProperty
JVM의 System Property 별 테스트를 할 수 있게 해줍니다.
(JVM의 System Property 가 궁금하시다면 https://coding-factory.tistory.com/527 에서 확인해주세요.)
만약 2개 이상의 조건으로 테스트하고 싶다면 @EnabledIfSystemProperties, @DisabledIfSystemProperties를 사용할 수 있습니다.
파라미터명 | 타입 | 설명 |
named | String | JVM의 Systme Property 명 |
matches | String | 찾고자하는 이름, 정규식 |
disabledReason | String | disabled 이유 @Disabled 사용했을 경우 사용 |
예제
package com.effortguy.junit5;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.condition.DisabledIfSystemProperty;
import org.junit.jupiter.api.condition.EnabledIfSystemProperties;
import org.junit.jupiter.api.condition.EnabledIfSystemProperty;
public class EnabledIfSystemPropertyAnnotation {
@Test
@EnabledIfSystemProperty(named = "java.version", matches = "1.8.0_261")
void testEnabledIfSystemProperty() {
}
@Test
@EnabledIfSystemProperties({
@EnabledIfSystemProperty(named = "java.version", matches = "1.8.0_261"),
@EnabledIfSystemProperty(named = "java.vendor", matches = "Oracle Corporation")
})
void testEnabledIfSystemProperties() {
}
@Test
@DisabledIfSystemProperty(named = "java.version", matches = "1.8.0_261")
void testDisabledIfSystemProperty() {
}
}
결과
@EnabledIfEnvironmentVariable, @DisabledIfEnvironmentVariable
환경 변수 별로 테스트 할 수 있게 해주는 어노테이션
만약 2개 이상의 조건으로 테스트하고 싶다면 @EnabledIfEnvironmentVariables, @DisabledIfEnvironmentVariables를 사용할 수 있습니다.
파라미터명 | 타입 | 설명 |
named | String | 환경변수명 |
matches | String | 찾고자하는 이름, 정규식 |
disabledReason | String | disabled 이유 @Disabled 사용했을 경우 사용 |
예시
미리 환경 변수에 JUnit 을 5로 설정해놨습니다.
package com.effortguy.junit5;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.condition.DisabledIfEnvironmentVariable;
import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable;
public class EnabledIfEnvironmentVariableAnnotation {
@Test
@EnabledIfEnvironmentVariable(named = "JUnit", matches = "5")
void testEnabledIfEnvironmentVariable() {
}
@Test
@DisabledIfEnvironmentVariable(named = "JUnit", matches = "5")
void testDisabledIfEnvironmentVariable() {
}
}
결과
@EnabledIf, @DisabledIf
개발자 원하는 조건으로 테스트를 진행할 수 있습니다.
파라미터명 | 타입 | 설명 |
value | String | 조건 로직이 있는 메소드명 |
disabledReason | String | disabled 이유 @Disabled 사용했을 경우 사용 |
예제
package com.effortguy.junit5;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.condition.DisabledIf;
import org.junit.jupiter.api.condition.EnabledIf;
public class EnabledIfAnnotation {
@EnabledIf("customCondition")
@Test
void testEnabledIf() {
}
@Test
@DisabledIf("customCondition")
void testDisabledIf() {
}
boolean customCondition() {
return true;
}
}
결과
다음 포스팅에선 JUnit 4에서 JUnit 5으로 마이그레이션하는 방법에 대해서 알아보겠습니다.
읽어주셔서 감사합니다.
'Java' 카테고리의 다른 글
[Java] JUnit 5 사용법 (11) - Hamcrest (0) | 2022.09.06 |
---|---|
[Java] JUnit 5 사용법 (10) - Assertions, Assumptions (0) | 2022.09.06 |
[Java] JUnit 5 사용법 (9) - JUnit 4에서 JUnit 5로 마이그레이션 하는 방법 (JUnit 4 vs JUnit 5) (2) | 2022.09.06 |
[Java] JUnit 5 사용법 (7) - 테스트 순서 (@TestMethodOrder) (0) | 2022.09.06 |
[Java] JUnit 5 사용법 (6) - 테스트 인스턴스 (@TestInstance) (0) | 2022.09.06 |
댓글