JUnit5 - 조건에 따라 테스트 실행하기

현시기얌·2021년 8월 24일
0

JUnit5

목록 보기
3/8

특정한 조건을 만족하는 경우에 테스트를 실행하는 방법

org.junit.jupiter.api.Assumptions.* 
  • assumeTrue(조건) : 특정 조건이 만족했을 경우에만 테스트 실행
    @Test
    @DisplayName("테스트 제목 만들기 \uD83D\uDE31")
    void create1_this_underscore_maybe_delete() {
        //given
        Assumptions.assumeTrue("LOCAL".equalsIgnoreCase(System.getenv("TEST_ENV")));
        final Study study = new Study(StudyStatus.ENDED, -10);
        //then
        assertAll(
                () ->   assertNotNull(study),
                () -> assertEquals(StudyStatus.DRAFT, study.getStatus(), () -> "스터디를 처음 만들면 " +  StudyStatus.DRAFT + " 상태여야 한다."),
                () -> assertTrue(study.getLimit() > 0, () -> "스터디 최대 참석 가능 인원은 0보다 커야 한다.")
        );
    }

ex) TEST_ENV가 LOCAL이면 테스트 실행 아니면 테스트 실행 X

  • assumingThat(조건, 테스트) : 특정 조건이 만족하면 특정 테스트 실행
    @Test
    void assumingThatTest() {
        //given
        final Study study = new Study(StudyStatus.ENDED, 10);
        //then
        assumingThat("LOCAL".equalsIgnoreCase(System.getenv("TEST_ENV")), () -> {
            assertEquals(StudyStatus.ENDED, study.getStatus());
        });
        assumingThat("ENV".equalsIgnoreCase(System.getenv("TEST_ENV")), () -> {
            assertEquals(StudyStatus.ENDED, study.getStatus());
        });
        assumingThat("PROD".equalsIgnoreCase(System.getenv("TEST_ENV")), () -> {
            assertEquals(StudyStatus.ENDED, study.getStatus());
        });
    }

@Enabled 와 @Disabled

  • OnOS : 해당 운영체제 일때 실행 또는 해당 운영체제 일때 실행 X
    @Test
    @EnabledOnOs(OS.WINDOWS)
    void EnabledOnOs_OS_WINDOWS() {
        //given
        final Study study = new Study(StudyStatus.ENDED, 10);
        //then
        assertThat(study.getLimit()).isGreaterThan(9);

    }

    @Test
    @EnabledOnOs(OS.MAC)
    void EnabledOnOs_OS_MAC() {
        //given
        final Study study = new Study(StudyStatus.ENDED, 10);
        //then
        assertThat(study.getLimit()).isGreaterThan(9);
    }
    @Test
    @DisabledOnOs(OS.WINDOWS)
    void DisabledOnOs_OS_WINDOWS() {
        //given
        final Study study = new Study(StudyStatus.ENDED, 10);
        //then
        assertThat(study.getLimit()).isGreaterThan(9);

    }

    @Test
    @DisabledOnOs(OS.MAC)
    void DisabledOnOs_OS_MAC() {
        //given
        final Study study = new Study(StudyStatus.ENDED, 10);
        //then
        assertThat(study.getLimit()).isGreaterThan(9);
    }

실행 결과 :

  • OnJRE : 해당 자바 버전일때만 실행 또는 해당 자바 버전일때 실행X
    @Test
    @EnabledOnJre({JRE.JAVA_8, JRE.JAVA_11, JRE.JAVA_13})
    void EnabledOnJRE_JAVA11() {
        //given
        final Study study = new Study(StudyStatus.ENDED, 10);
        //then
        assertThat(study.getLimit()).isGreaterThan(9);

    }

    @Test
    @DisabledOnJre(JRE.JAVA_11)
    void DisabledOnJRE_JAVA11() {
        //given
        final Study study = new Study(StudyStatus.ENDED, 10);
        //then
        assertThat(study.getLimit()).isGreaterThan(9);
    }

실행 결과 :

  • IfEnvironmentVariable : 특정 환경 변수가 일때만 실행 또는 해당 환경 변수일때 실행 X
    @Test
    @EnabledIfEnvironmentVariable(named = "TEST_ENV", matches = "local")
    void EnableIfEnvironmentVariableTest() {
        //given
        final Study study = new Study(StudyStatus.ENDED, 10);
        //then
        assertThat(study.getLimit()).isGreaterThan(9);
    }
    
    @Test
    @DisabledIfEnvironmentVariable(named = "TEST_ENV", matches = "prod")
    void DisableEnableIfEnvironmentVariableTest() {
        //given
        final Study study = new Study(StudyStatus.ENDED, 10);
        //then
        assertThat(study.getLimit()).isGreaterThan(9);
    }
profile
현시깁니다

0개의 댓글