Kotlin Paramaterized Test
Kotest, Junit5 두개를 기준으로 설명합니다.
Goal
- Kotest 에서 Paramaterized Test 하는 방법을 알아봅니다.
- Junit5 으로 Paramaterized Test 하는 방법을 알아봅니다.
Kotest
forAll을 이용합니다.
Behavior Spec 기준으로 작성하였습니다.
1 | |
1 | |
forAll와row를 이용하여 여러 파라메터와, 케이스를 넣어줄 수 있습니다.
Junit5
의존성 추가
1 | |
기본으로 제공해주는 타입을 넣어주기
@ValueSource,CsvSource를 이용합니다.
1 | |
@ValueSource를 이용해 같은 타입의 값을 여러번 넣어줄 수 있습니다. (코틀린의 경우에는[]를 사용합니다.)@CsvSource를 이용해 여러개의 값을 넣어줄 수 있습니다.
객체 타입을 넣어주기
@MethodSource를 이용합니다.
1 | |
- 테스트 함수 이름과 object 내부의 함수이름이 같다면,
@MethodSource에 호출할 함수 이름을 생략해주어도 됩니다. @MethodSource의 경우@JvmStatic을 이용하여 처리해주어야 합니다.@MethodSource는 내부적으론 자바기반으로 작성되어있고 static method를 호출하여 매개변수를 생성합니다.- 하지만 Java에서는 kotlin의 object의 메서드를 static 변수처럼
ClassName.methodName()와 같은 방식으로 접근을 못하기 때문에,@JvmStatic이 필요합니다.
Reference
- https://www.baeldung.com/kotlin/junit-5-kotlin
- https://kotlinlang.org/docs/reference/annotations.html