티스토리 뷰

Assumptions 클래스

  - assumeTrue, assumingThat

import static org.junit.jupiter.api.Assumptions.*;

1. assumeTrue

public static void assumeTrue(boolean assumption) throws TestAbortedException

   - assumption 조건이 false인 경우 다음 라인의 코드를 실행하지 않는다.

@Test
@DisplayName("스터디 만들기")
void create_new_study() {
    String test_env = "mandy";
    assumeTrue("LOCAL".equalsIgnoreCase(test_env));

    Study actual = new Study(10);
    assertTrue(actual.getLimit() > 0);
}

>> 실행 결과

 

2. assumingThat

public static void assumingThat(boolean assumption, Executable executable)

   - 조건에 true인 경우 executable의 lambda 형식의 인스턴스 실행

   - equalsIgnoreCase 는 대소문자를 구분하지 않고 같은지 비교

@Test
@DisplayName("스터디 만들기")
void create_new_study() {
    String test_env = "mandy";

    assumingThat("LOCAL".equalsIgnoreCase(test_env), () -> {
        System.out.println("local");
        Study actual = new Study(10);
        assertTrue(actual.getLimit() > 0);
    });

    assumingThat("MANDY".equalsIgnoreCase(test_env), () -> {
        System.out.println("local");
        Study actual = new Study(10);
        assertTrue(actual.getLimit() > 0);
    });
}

 

3. @Enabled___ 와 @Disabled___

import org.junit.jupiter.api.condition.*;

   - 조건에 따라 테스트를 실행할 지를 결정

   - OnOs

   - OnJre

   - IfSystemProperty

   - IfEnvironmentVariable

@Test
@DisplayName("스터디 만들기 1")
@EnabledOnOs({OS.WINDOWS, OS.MAC})
@EnabledOnJre({JRE.JAVA_8, JRE.JAVA_9, JRE.JAVA_11})    
void create_new_study() {
    String test_env = "mandy";

    assumingThat("LOCAL".equalsIgnoreCase(test_env), () -> {
        System.out.println("local");
        Study actual = new Study(10);
        assertTrue(actual.getLimit() > 0);
    });

    assumingThat("MANDY".equalsIgnoreCase(test_env), () -> {
        System.out.println("local");
        Study actual = new Study(10);
        assertTrue(actual.getLimit() > 0);
    });
}

@Test
@DisplayName("스터디 만들기 2")
@DisabledOnOs(OS.WINDOWS)
@EnabledOnJre(JRE.OTHER)
@EnabledIfEnvironmentVariable(named = "TEST_ENV", matches = "LOCAL")
void create_new_study_again() {
    IllegalArgumentException exception =
            assertThrows(IllegalArgumentException.class, () -> new Study(-10));
    assertEquals("limit은 0보다 커야 한다.", exception.getMessage());
}

 

 

 

 

출처

https://www.inflearn.com/course/the-java-application-test 더 자바, 애플리케이션을 테스트하는 다양한 방법(백기선)

728x90