Assumptions
Assumption 구문은 테스트 메서드가 특정한 조건에 대해서 실행하고자 할 때 사용하는 구문입니다. JUnit5에서는 org.junit.jupiter.api.assumptions 패키지의 내용물로 사용할 수 있습니다.
assumeTrue 메서드는 파라미터의 값이 true일때 테스트를 계속 진행하겠다라는 의미입니다.
예를들어 특정한 OS, JAVA 버전, 환경변수에 따라 이러한 값에 따라 실행되어야한다. 실행되지 않아야 한다. 이런식으로 활용 할 수 있습니다.
저는 환경변수를 통해 테스트를 진행하였습니다.
![[JUnit5] Assumptions - Assumptions [JUnit5] Assumptions - Assumptions](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
이런식으로 환경변수를 하나 잡아줍니다. 그리고 인텔리제이를 껏다켜야합니다. 인텔리제이는 기본적으로 실행당시에 환경변수들을 읽어오기때문에 재부팅하지 않으면 인식하지 못할 수 도 있습니다.
@Test
@DisplayName("스터디 만들기 ╯°□°)╯")
void create_new_study() {
String test_env = System.getenv("TEST_ENV");
System.out.println("test_env = " + test_env);
Assumptions.assumeTrue("LOCAL".equalsIgnoreCase(test_env));
Study actual = new Study(10);
assertEquals(actual.getLimit(), 10);
}
그리고 Assumptions.assumeTrue를 하게 되면 test_env가 위의 잡은 환경변수가 LOCAL일때만 밑의 테스트를 진행 하게 됩니다. 위의 코드는 성공한 케이스로 아래와 같이 나오게 됩니다.
![[JUnit5] Assumptions - Assumptions [JUnit5] Assumptions - Assumptions](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
이렇게 True일 떄는 잘 되지만 다른 컴퓨터에서는 test_env가 LOCAL2로 잡혀있거나 환경변수로 안잡혀있다면 아래와 같이 나오게 됩니다.
@Test
@DisplayName("스터디 만들기 ╯°□°)╯")
void create_new_study() {
String test_env = System.getenv("TEST_ENV");
System.out.println("test_env = " + test_env);
Assumptions.assumeTrue("LOCAL2".equalsIgnoreCase(test_env));
Study actual = new Study(10);
assertEquals(actual.getLimit(), 10);
}
![[JUnit5] Assumptions - Assumptions [JUnit5] Assumptions - Assumptions](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
Disable한것처럼 무시하게 됩니다.
@Test
@DisplayName("스터디 만들기 ╯°□°)╯")
void create_new_study() {
String test_env = System.getenv("TEST_ENV");
System.out.println("test_env = " + test_env);
Assumptions.assumeTrue("LOCAL".equalsIgnoreCase(test_env));
Assumptions.assumingThat("LOCAL".equalsIgnoreCase(test_env), () -> {
System.out.println("loccal");
Study actual = new Study(10);
assertEquals(actual.getLimit(), 10);
});
Assumptions.assumingThat("TEST".equalsIgnoreCase(test_env), () -> {
System.out.println("test");
Study actual = new Study(10);
assertEquals(actual.getLimit(), 10);
});
}
그리고 assumingThat은 조건이 이랬을때는 이렇게 하면서 테스트를 진행 할 수 도 있습니다.
![[JUnit5] Assumptions - Assumptions [JUnit5] Assumptions - Assumptions](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
그래서 test만뺴고 다 출력이 되는 모습입니다.
@Test
@DisplayName("스터디 만들기 ╯°□°)╯")
@EnabledOnOs({OS.LINUX, OS.MAC})
void create_new_study() {
또 메소드 위의 @EnabledOnOs 를하게되면 mac일때 linux일때 실행되게 할 수 있다.
@EnabledOnJre({JRE.JAVA_8, JRE.JAVA_9, JRE.JAVA_10, JRE.JAVA_11})
java 8, 9, 10 11버전일떄만 실행된다.
@EnabledIfEnvironmentVariable(named = "TEST_ENV", matches = "LOCAL")
위의 내용과 같지만 어노테이션으로 할 수 있습니다. TEST_ENV 가 LOCAL일떄 실행된다.
이와 반대 되는 의미로 @DisabledOnJRE, OS 가 있다.
'Spring Boot > JUnit5' 카테고리의 다른 글
[JUnit5] 테스트 순서 (0) | 2022.07.22 |
---|---|
[JUnit5] 테스트 인스턴스 (0) | 2022.07.22 |
[JUint5] 테스트 반복하기 (0) | 2022.07.22 |
[JUnit5] Assertion (0) | 2022.07.21 |
[JUnit 5] JUit5 (0) | 2022.07.21 |
댓글