assumeTrue : 조건
- 조건을 정해주고 해당조건에 적합한지 체크한다.
@Test
@DisplayName("조건에 맞춰 실행")
void assume_ex() {
Lunch lunch = new Lunch();
String test_env = "LOCAL";
assumeTrue("LOCAL".equals(test_env));
assertTrue(lunch.getLunch("test").equals("Complete"), () -> "실패시 메시지");
}
- 현재 테스트 하는 환경을 예로 들어 LOCAL환경인지 개발환경인지 실서버 환경인지 여부를 체크하여 다음에 실행될 테스트 코드를 실행할지 여부를 정할 수 있다. 만일 위 코드에서 LOCAL 환경이 아니라면 다음 테스트는 실행되지 않을것이다.
- 위 케이스에서는 test_env라는 변수를 하드코딩하여 테스트를 하였지만, 실제 사용시에는 해당 변수를 특정 메서드를 통해 받아오거나 환경변수를 통해 활용하면 될것이다.
assumingThat : 조건, 테스트
- 조건을 넣어주고 해당조건에 적합할시 테스트할 코드를 작성한다.
@Test
@DisplayName("조건에 맞춰 실행")
void assume_ex() {
String test_env = "LOCAL"; // 이 변수를 환경변수를 통해 값을 가져와서 활용할 수 있다.
assumingThat("LOCAL".equals(test_env), () -> {
System.out.println("LOCAL 환경에서 실행될 테스트 코드");
});
assumingThat("DEV".equals(test_env), () -> {
System.out.println("DEV 환경에서 실행될 테스트");
});
assumingThat("LIVE".equals(test_env), () -> {
System.out.println("LIVE 환경에서 실행될 테스트");
});
}
- 위 코드를 실행시 해당 하는 조건에 맞춰 특정 테스트 케이스를 실행하게 된다.
@Enabled : 어노테이션을 활용한 특정조건 실행
- 예를들어 @EnabledOnOs 어노테이션을 통해 특정 OS환경에서 테스트를 실행할 수 있다.
@Test
@DisplayName("조건에 맞춰 실행 - 어노테이션")
@EnabledOnOs(OS.MAC)
void enabled_ex() {
Lunch lunch = new Lunch();
assertTrue(lunch.getLunch("test").equals("Complete"));
}
- 위 테스트는 OS가 MAC인 경우에만 동작한다. (반대로 DisAbledOnOs를 통해 MAC환경에서는 실행하지 않게 설정도 가능하다.)
@Test
@DisplayName("조건에 맞춰 실행 - 어노테이션 dis")
@DisabledOnOs(OS.MAC)
void disabled_ex() {
Lunch lunch = new Lunch();
assertTrue(lunch.getLunch("test").equals("Complete"));
}
- 또한 EnabledOnJre를 통해 특정 자바버전에서 실행도 가능하다.
@Test
@DisplayName("조건에 맞춰 실행 - 어노테이션 Variable")
@EnabledIfEnvironmentVariable(named = "TEST_ENV", matches = "LOCAL")
void enabled_environment_variable_ex() {
Lunch lunch = new Lunch();
assertTrue(lunch.getLunch("test").equals("Complete"));
}
- @EnabledIfEnvironmentVariable 어노테이션을 통해 환경변수에 설정된 값에 해당할 경우만 실행시킬 수 있다.
# 이 글은 백기선님의 "더 자바, 애플리케이션을 테스트하는 다양한 방법"을 듣고 정리한 내용입니다. #
'Language > Java(TestCode)' 카테고리의 다른 글
[TestCode] @interface 커스텀 태그 (JUnit5) (0) | 2022.08.25 |
---|---|
[TestCode] @Tag 태깅과 필터링 (JUnit5) (0) | 2022.08.24 |
[TestCode] assertion 기대값, 참 거짓 확인 (JUnit5) (0) | 2022.08.21 |
[TestCode] @DisplayName 테스트 이름표시법 (JUnit5) (0) | 2022.08.18 |
[TestCode] Test, Before, After, Disabled (JUnit5) (0) | 2021.12.07 |