[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 공식 문서를 참고하세요.

참고 문헌: