Study/Java
[JUnit5] @ParameterizedTest 애노테이션(반복 테스트) 커스텀 하기
검프
2021. 10. 20. 01:28
반복 테스트(ParameterizedTest)에 대한 출력을 통일성 있게 하고싶어 아래와 같은 옵션들을 지정했어요.
@ParameterizedTest(name = "{displayName} {index}, args = {arguments}")
@DisplayName("사용자 생성 - 성공")
@ParameterizedTest(name = "{displayName} {index}, args = {arguments}")
@ValueSource(strings = {"ㅁㅇㄹㅁㅇㄹ", "ㅓㅓㅓㅓ", "adfdf", "검프", "검프23213"})
void save(String name) {
...
}
테스트 출력시
위와 같이 나오며, "반복 테스트의 이름, 실행 번호, 파라미터"와 같은 형식으로 나오게 했어요.
정말 좋은데, 이러한 형식을 사용하기 위해 @ParameterizedTest를 사용하는 모든 곳에 위와 같은 옵션을 줘야해요.
귀찮지 않나?
맞아요. 테스트가 한 두개면 모르겠는데, 100개 이상인 반복 테스트에서 일일이 위와 같은 형식으로 작성하는 것은 문제가 있어요.
애노테이션 선언 (테스트 폴더에서)
#test/java/com/cvi
package com.cvi;
import org.junit.jupiter.params.ParameterizedTest;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target({ ElementType.ANNOTATION_TYPE, ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
@ParameterizedTest(name = "{displayName} {index}, args = {arguments}")
public @interface CustomParameterizedTest {
}
커스텀한 ParameterizeTest를 만들었어요.
자세히 보면, 선언 위치는
애노테이션 타입과, 메소드에서, 실행시점
은 런타임 시간에 작동하기로 선언하고, @ParameterizedTest와 옵션을
함께 정의했어요.
이게 되는 이유는 JUnit5에서 애노테이션을 조합하여 커스텀한 애노테이션을 만들 수 있게 지원하기 때문이에요.
여튼 이제, 반복 테스트 즉, @ParameterizedTest를 사용하는 곳에서는 동일한 출력을 보장할 수 있게 됐어요 😂
@DisplayName("사용자 생성 - 성공")
@CustomParameterizedTest
@ValueSource(strings = {"ㅁㅇㄹㅁㅇㄹ", "ㅓㅓㅓㅓ", "adfdf", "검프", "검프23213"})
void save(String name) {
...
}