无法使用Android Test Orchestrator运行参数化测试

问题描述 投票:12回答:1

我正在尝试使用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
    }

}

我正在尝试使用Android Test Orchestrator运行参数化测试。但是由于某种原因,参数化测试无法启动。我可以在没有Orchestrator的情况下正常运行所有测试,但需要清除它...

android junit kotlin android-espresso
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.