Kotlin
JUnit
spring-boot

[Spring Boot] パラメータライズドテストの書き方

環境

ライブラリ名 バージョン
spring-boot 2.0.4.RELEASE
kotlin 1.2.60
junit 5

パラメータライズドテストとは?

一言でいうと、一つのテストメソッドにパラメータを与えて複数のテストをするもの
具体的にはコードで説明して行きます。

テストコード

  • 偶数かどうかを判定するメソッドが存在する
  • 偶数の場合はtrueを返し、奇数の場合はfalseを返す
/**
* テスト対象のメソッド
*/
fun isEven(num: Int): Boolean {
  return num % 2
}


fun patterns(): List<TestDataPattern> {
  return listOf(
    TestDataPattern("数字が奇数の場合", 1),
    TestDataPattern("数字が偶数の場合", 2)
  )
}

/**
* @param message テストの際に表示するメッセージ
* @param parameter テストする値
* @param expected テストが期待する結果
*/
data class TestDataPattern(val message: String, val parameter: Int, val expected: Boolean)

@ParameterizedTest
@MethodSource("patterns")
fun testIsEven(pattern: TestDataPattern) {
  assertEquals(pattern.expected, isEven(pattern.parameter), pattern.message)
}

パラメータライズドテストをするメソッドにはアノテーションで@ParameterizedTestをつける。
@MethodSource("patterns")によって、patternsというメソッドの返り値が引数patternに順番に入ることで実行される。