環境
ライブラリ名 | バージョン |
---|---|
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
に順番に入ることで実行される。