我想使用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
之类的东西?