我正在尝试使用Android Test Orchestrator运行参数化测试。但由于某些原因,参数化测试无法启动。我可以在没有Orchestrator的情况下正确运行所有测试但我需要它来清除测试之间的一些数据。
这是Gradle的输出。它可以看到所有14个测试,但只执行了12个(缺少2个参数化):
在Nexus_5X_API_27(AVD) - 8.1.0上开始14次测试
Nexus_5X_API_27(AVD)测试 - 8.1.0失败:测试运行失败 完成。预计14次测试,收到12次
测试运行未能完成。预计14次测试,收到12次
摇篮:
android {
defaultConfig {
testInstrumentationRunner "foo.bar.CustomRunner"
}
testOptions {
unitTests.returnDefaultValues = true
execution 'ANDROID_TEST_ORCHESTRATOR'
}
}
dependencies {
androidTestImplementation "com.android.support.test:runner:$runnerVersion"
androidTestUtil "com.android.support.test:orchestrator:$runnerVersion"
}
测试
@LargeTest
@RunWith(Parameterized::class)
class ParamTest(val param1: String, val param2: String) {
companion object {
@JvmStatic
@Parameterized.Parameters
fun data(): Collection<Array<Any>> {
return listOf(
arrayOf("param1", "param2"),
arrayOf("param21", "param22")
)
}
}
@Test
fun shouldDoSthWithParams() {
//some test
}
}
修改
可以使用变通密封类:
@LargeTest
@RunWith(AndroidJUnit4::class)
class ParamTest1 : ParamTest("param1", "param2")
@LargeTest
@RunWith(AndroidJUnit4::class)
class ParamTest2 : ParamTest("param21", "param22")
sealed class ParamTest(val param1: String, val param2: String) {
@Test
fun shouldDoSthWithParams() {
//some test
}
}
答案 0 :(得分:0)
Orchestrator当前不支持参数化测试: https://developer.android.com/jetpack/androidx/releases/archive/test#relnotes-20170725-known-issues
答案 1 :(得分:0)
该问题已在 1.3.0-beta02
库的 androidx.test:runner
版本中修复。请参阅 AndroidX Test 1.3.0 Beta02 发行说明,其中明确指出此问题已修复。