[kotlin] JUnit의 파라미터화된 테스트
JUnit은 파라미터화된 테스트를 지원하여 동일한 테스트 메서드를 여러 번 실행할 수 있습니다. 이것은 특히 동일한 동작을 여러 다른 입력에 대해 테스트하고 싶을 때 유용합니다.
파라미터화된 테스트 작성
파라미터화된 테스트를 작성하려면 @ParameterizedTest
어노테이션을 사용하고, 파라미터를 제공하는 메소드는 @MethodSource
어노테이션을 사용하여 지정합니다.
아래는 간단한 예제입니다.
class ParameterizedTestExample {
@ParameterizedTest
@MethodSource("stringProvider")
fun testWithStringParameters(str: String) {
assertNotNull(str)
}
companion object {
@JvmStatic
fun stringProvider(): Stream<String> {
return Stream.of("apple", "banana", "grape")
}
}
}
@MethodSource
어노테이션
@MethodSource
어노테이션을 사용하여 테스트 메소드에 필요한 파라미터 값을 반환하는 메소드를 지정할 수 있습니다. 위의 예제에서 stringProvider
메소드는 String 값의 스트림을 반환합니다.
배열을 이용한 파라미터화된 테스트
파라미터화된 테스트에서 배열을 사용하여 여러 파라미터를 지정할 수도 있습니다.
class ArrayParameterizedTest {
@ParameterizedTest
@ValueSource(ints = [1, 2, 3])
fun testWithArrayParameters(value: Int) {
assertTrue(value > 0)
}
}
테스트 결과
JUnit은 각 파라미터에 대해 별도로 실행된 테스트를 보고하며, 각 테스트의 이름도 파라미터 값에 기반하여 자동으로 생성됩니다.
파라미터화된 테스트를 사용하면 테스트 메소드 하나로 여러 다른 입력을 가진 테스트를 작성할 수 있어서, 테스트의 재사용성과 유지보수성을 높일 수 있습니다.
더 자세한 정보는 JUnit 5 공식 문서를 참고하세요.
참고 문헌: