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또는 빈값의 테스트도 필요한데 그때 사용하면 될것같다.