Posted at

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

More than 1 year has passed since last update.


環境

ライブラリ名
バージョン

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に順番に入ることで実行される。