Java #Kotlin
テスト対象コード
class Calculator() {
fun add(x: Int, y: Int) = x + y
}
JUnit4
import org.hamcrest.CoreMatchers
import org.hamcrest.MatcherAssert
import org.junit.Test
import org.junit.runner.RunWith
import org.junit.runners.Parameterized
@RunWith(Parameterized::class)
internal class CalculatorTest(private val x: Int, private val y: Int, private val expected: Int) {
@Test
fun test() {
val calc = Calculator()
val actual = calc.add(x, y)
MatcherAssert.assertThat(actual, CoreMatchers.equalTo(expected))
}
companion object {
@JvmStatic
@Parameterized.Parameters
fun data() = listOf(
arrayOf(1, 2, 3),
arrayOf(9, 8, 17),
)
}
}
JUnit5
import org.junit.Assert.assertEquals
import org.junit.jupiter.params.ParameterizedTest
import org.junit.jupiter.params.provider.CsvSource
internal class CalculatorTest {
@ParameterizedTest
@CsvSource(
"1, 2, 3",
"9, 8, 17",
)
fun test(x: Int, y: Int, expected: Int) {
val calc = Calculator()
val actual = calc.add(x, y)
assertEquals(expected, actual)
}
}
companion object を使う必要がない
簡単なテストケースであれば @CsvSource
が使えるため、すっきりする