반응형

조건에 따라 테스트 실행

  • 특정한 조건을 만족하는 경우에 테스트를 실행하는 방법.
  • 사용 API : org.junit.jupiter.api.Assumptions.*
  • assumeTrue(조건)
    • 조건이 다르면 테스트가 해당 위치에서 종료된다.
  • assumingThat(조건, 테스트)
    • 조건이 다르면 해당 테스트는 수행되지않고 아래의 테스트는 계속 수행된다.
  • @Enabled___ 와 @Disabled___
    • OnOS
      • 특정 OS에 특화된 테스트
    • OnJre
      • 특정 자바 버전에 특화된 테스트
    • IfSystemProperty
      • JVM 시스템 속성에 특화된 테스트
    • IfEnvironmentVariable
      • 운영체제의 환경 변수에 특화된 테스트
    • If
      • Deprecated

 

JUnit 5 - 조건에 따라 테스트 실행 예제

    @Test
    @DisplayName("스터디 만들기2")
    @EnabledOnOs({OS.MAC, OS.LINUX, OS.WINDOWS}) //MAC, LINUX, WINDOWS 운영체제에서만 테스트 수행되도록 설정
    @EnabledOnJre({JRE.JAVA_8, JRE.JAVA_9,JRE.JAVA_10, JRE.JAVA_11})
    @EnabledIfEnvironmentVariable(named = "TEST_ENV", matches = "LOCAL") //환경변수 값이 LOCAL 경우에만 테스트 수행되도록 설정
    void create_new_study_again() {
        /**
         * assumeTrue, assumingThat
         * 특정 조건을 만족하면 테스트가 수행되도록 할 수 있다.
         * 예) 시스템 환경변수에 따라서 동작하는 테스트 조작 가능
         *
         * assumeTrue : 조건이 다르면 테스트가 해당 위치에서 종료된다.
         * assumingThat : 조건이 다르면 해당 테스트는 수행되지않고 아래의 테스트는 계속 수행된다.
         */
        String test_env = System.getenv("TEST_ENV");
        System.out.println(test_env);

        //시스템 환경변수가 LOCAL 경우에만 테스트 수행
        assumingThat("LOCAL".equalsIgnoreCase(test_env), ()->{
            System.out.println("local");
            Study actual = new Study(100);
            assertEquals(actual.getLimit(), 100);
        });

        //시스템 환경변수가 History 경우에만 테스트 수행. 환경변수가 다르면 여기서 테스트가 멈춘다.
        assumeTrue("History".equalsIgnoreCase(test_env));
        assumeTrue("LOCAL".equalsIgnoreCase(test_env));

        //환경변수가 다르면 현재 테스트는 수행되지않고 아래의 테스트가 계속 수행된다.
        assumingThat("History".equalsIgnoreCase(test_env), ()->{
            System.out.println("history");
            Study actual = new Study(10);
            assertEquals(actual.getLimit(), 10);
        });

    }

 

  • assumeTrue의 조건이 맞지 않는다면 테스트가 종료된다.
    • assumeTrue("History".equalsIgnoreCase(test_env));
  • 특정 OS 또는 JRE 버전에서만 테스트를 동작하도록 할 수 있다. 조건이 맞지 않으면 테스트가 수행되지 않는다.
    • @EnabledOnOs, @EnabledOnJre, @DisabledOnOs, @DisabledOnJre

 

  • 환경 변수의 값에 따라 테스트를 동작하도록 할 수 있다.
    • @EnabledIfEnvironmentVariable , @DisabledIfEnvironmentVariable

[참고자료]

더 자바, 애플리케이션을 테스트하는 다양한 방법, 백기선

반응형

+ Recent posts