Here is an example of Parameterized test in JUnit 5.
@ParameterizedTest
@MethodSource("generalDataset")
fun shouldCreateItem(color: String, size: String) {
val item = Item(color, size)
assertThat(item.color).isEqualTo(color)
}
@JvmStatic
fun generalDataset() =
Stream.of(
arguments("blue", "S"),
arguments("red", "S"),
arguments("green", "S"),
arguments("blue", "L"),
arguments("red", "L"),
arguments("green", "L")
)
See that generalDataset
is a multiplcation of two sets {"blue", "red", "green"} x {"S", "L"}
.
To avoid duplication it would be great to describe it explicitly like this pseudocode
@ParameterizedTest
@MethodSource("colorDataset" %MULTIPLY% "sizeDataset")
fun shouldCreateItem(color: String, size: String) {
val item = Item(color, size)
assertThat(item.color).isEqualTo(color)
}
@JvmStatic
fun colorDataset() =
Stream.of(
arguments("blue"),
arguments("red"),
arguments("green")
)
@JvmStatic
fun sizeDataset() =
Stream.of(
arguments("S"),
arguments("L")
)
Is it possible to implement something similar (Parameterized test with multiplied sources) in JUnit 5?