Ale*_*rek 10 junit android kotlin android-espresso
我正在尝试使用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"
}
Run Code Online (Sandbox Code Playgroud)
测试:
@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
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:
作为解决方法,可以使用密封类:
@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
}
}
Run Code Online (Sandbox Code Playgroud)
Orchestrator 目前不支持参数化测试: https://developer.android.com/jetpack/androidx/releases/archive/test#relnotes-20170725-known-issues
| 归档时间: |
|
| 查看次数: |
450 次 |
| 最近记录: |