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