【问题标题】:Unable to run parameterized tests with Android Test Orchestrator无法使用 Android Test Orchestrator 运行参数化测试
【发布时间】:2018-07-21 23:04:35
【问题描述】:

我正在尝试使用 Android Test Orchestrator 运行参数化测试。但由于某种原因,参数化测试不会开始。我可以在没有 Orchestrator 的情况下正确运行所有测试,但我需要它来清除测试之间的一些数据。

这是 Gradle 的输出。它可以看到所有 14 个测试,但只有 12 个被执行(缺少 2 个被参数化):

Starting 14 tests on Nexus_5X_API_27(AVD) - 8.1.0

Tests on Nexus_5X_API_27(AVD) - 8.1.0 failed: Test run failed to complete. Expected 14 tests, received 12

Test run failed to complete. Expected 14 tests, received 12

Gradle:

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
    }

}

【问题讨论】:

  • 您找到其他解决方案了吗?密封类无法扩展,尤其是动态生成的测试数据。
  • @TWiStErRob 因此,注释处理器可用于生成 ui 测试。但由于运行前需要额外的 kapt 步骤,它也不是完美的解决方案。
  • 啊,好主意。随着增量 KAPT 的推出,它可能是一个可行的解决方案。虽然我更喜欢开箱即用的“刚刚工作”......即github.com/android/android-test/issues/215

标签: android junit kotlin android-espresso


【解决方案1】:

【讨论】:

  • 更新:androidx.test:runner 库的1.3.0-beta02 版本开始支持参数化测试。有关发行说明的链接,请参阅我的回答 here
【解决方案2】:

该问题已在 androidx.test:runner 库的版本 1.3.0-beta02 中得到修复。请参阅 AndroidX Test 1.3.0 Beta02 发行说明,其中明确指出此问题已修复。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-21
    • 1970-01-01
    • 2014-03-01
    • 2018-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多