본문 바로가기

Language/Java(TestCode)

[TestCode] assume 조건에 따라 테스트 실행 (JUnit5)

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 어노테이션을 통해 환경변수에 설정된 값에 해당할 경우만 실행시킬 수 있다.

 

# 이 글은 백기선님의 "더 자바, 애플리케이션을 테스트하는 다양한 방법"을 듣고 정리한 내용입니다. #