Language/Java(TestCode)

[TestCode] @RepeatedTest, @ParameterizedTest 테스트 반복하기 (JUnit5)

비독개 2022. 8. 26. 16:24

@RepeatedTest : 반복 횟수와 반복 테스트 이름을 설정할 수 있다.

@RepeatedTest(10) // 10번의 테스트 반복
    void repeatTest(RepetitionInfo repetitionInfo) { // 매개변수 통하여 현재 테스트 정보를 얻어옴
        System.out.println("현재 " + repetitionInfo.getTotalRepetitions() + " 개의 테스트중 " + // 총 테스트 수 
                repetitionInfo.getCurrentRepetition() + " 번 실행중"); // 현재 진행중인 테스트 번호
    }

- 테스트 반복 횟수를 설정하고 매개변수를 통하여 테스트의 정보를 받아올 수 있다.

- @RepeatedTest 어노테이션엔 2개의 매개변수를 넣어줄수 있는데(value, name) 이를 활용하여 테스트코드 명칭을 좀더 명확하게 확인할 수 있다.

 

@DisplayName("테스트 코드 반복 실행")
    @RepeatedTest(value = 10, name = "{DisplayName}, {currentRepetition}/{totalRepetitions}") // 10번의 테스트 반복

- {displayName}, {currentRepetition}, {totalRepetitions} 등의 정보를 활용할 수 있다.

 

@ParameterizedTest : 테스트에 여러 다른 매개변수를 대입해가며 반복 실행한다.

    @DisplayName("테스트 코드 반복하기")
    @ParameterizedTest(name = "{index} {displayName} param={0}")
    @ValueSource(strings = {"테스트", "코드", "매개", "변수"})
    void parameterized_ex(String param) {
        System.out.println(param);
    }

- @ValueSorce 어노테이션을 통해 반복시켜줄 변수들을 설정해주고 메서드에 매개변수를 통해 해당 변수들의 수에 맞춰 반ㅂ고하게 된다.

- name 을 통해 위에서 했던 방식과 동일하게 테스트명을 직관적으로 보여줄수 있다.

@EmptySource, @NullSource : Empty, Null 을 테스트 변수로 넣어준다.

- 위 두가지를 합쳐서 한번에 실행할 수 있는 어노테이션이 NullAndEmptySource 이다

@DisplayName("테스트 코드 반복하기")
    @ParameterizedTest(name = "{index} {displayName} param={0}")
    @ValueSource(strings = {"테스트", "코드", "매개", "변수"})
    @EmptySource
    @NullSource
    @NullAndEmptySource
    void parameterized_ex(String param) {
        System.out.println(param);
    }

- 테스트를 하다보면 null또는 빈값의 테스트도 필요한데 그때 사용하면 될것같다.