Я хочу создать новый параметризованный тест в уже существующем классе тестов, используя ParameterizedRobolectricTestRunner
.
Я нашел только примеры и документацию, используя @ParameterizedRobolectricTestRunner.Parameters
с одним тестом с использованием предоставленных параметров.Например:
@RunWith(ParameterizedRobolectricTestRunner::class)
class TestClass(private val type: String, private val value: Int) {
@Test
fun `single test example`() {
assertEquals(type, parser.getTypeByValye(value))
}
companion object {
@JvmStatic
@ParameterizedRobolectricTestRunner.Parameters(name = "{0}")
fun params() = listOf(
arrayOf("TIPO 1", 1),
arrayOf("TIPO 2", 2),
arrayOf("TIPO 4", 3)
)
}
}
Но я хотел бы создать много тестов в одном файле с разными параметрами, как я обычно это делаю с JUnitParamsRunner
и @Parameters
.Например:
@RunWith(JUnitParamsRunner::class)
class TestClass {
@Test
@Parameters(method = "params1")
fun `test example 1`(booleanParam: Boolean, enumParam: EnumParam) {
givenBooleanParam(booleanParam)
tested.doSomething()
verify(anotherClass).doAnotherThing(enumParam, emptyMap())
}
@Test
@Parameters(method = "params2")
fun `test example 2`(enumParam: EnumParam, booleanParam: Boolean, stringParam: String) {
givenString(stringParam)
tested.doSomethingElse(booleanParam)
verify(anotherClass).doAnotherThing(enumParam, emptyMap())
}
@Suppress("unused")
private fun params1() =
arrayOf(
arrayOf(true, EnumType1),
arrayOf(false, EnumType2)
)
@Suppress("unused")
private fun params2() =
arrayOf(
arrayOf(EnumType1, true, TRACK_ENUM_1),
arrayOf(EnumType2, false, TRACK_ENUM_2)
)
}
Можно ли использовать что-то вроде @Parameters
таким образом с ParameterizedRobolectricTestRunner
?