gpt4 book ai didi

android - 如何使用 gradle 动态切换/更改 testInstrumentationRunner

转载 作者:IT老高 更新时间:2023-10-28 23:15:01 30 4
gpt4 key购买 nike

我的项目有 2 组不同的测试。一组仅使用默认的 AndroidJUnitRunner 运行,另一组必须使用自定义实现 TestRunner extends MonitoringInstrumentation 运行。

目前我每次需要运行另一组测试时通过编辑 build.gradle 来切换 testInstrumentationRunner:

android{
defaultConfig {
//testInstrumentationRunner "my.custom.TestRunner"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
}

我知道 flavor 可以有自己的 testInstrumentationRunner,但我当前的应用程序已经有 2 个 flavourDimensions。使用 flavor 实际上是为了拥有不同版本的应用程序。我需要 2 个版本的测试应用程序,都使用不同的 testInstrumentationRunner 测试同一个应用程序。

我尝试通过迭代所有测试变体来更改 testInstrumentationRunnertestInstrumentationRunner 属性其实有多个:

android.testVariants.all { TestVariant variant ->
//readonly
variant.variantData.variantConfiguration.instrumentationRunner

variant.variantData.variantConfiguration.defaultConfig.testInstrumentationRunner

}

但只要调用 android.testVariants,构建就会被配置,并且所有更改都不会反射(reflect)在构建中。

如何动态更改 testInstrumentationRunner(来自 gradle 插件)?

我希望有 2 个不同的 gradle 任务,每个任务使用不同的 testInstrumentationRunner 但测试相同的变体。因为我打算创建一个 gradle 插件,所以解决方案也应该作为插件工作。

最佳答案

您是否考虑过使用控制台参数作为两种配置之间的切换?就这么简单:

android {
defaultConfig {
if (project.ext.has("customRunner")) {
testInstrumentationRunner "my.custom.TestRunner"
} else {
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
}
}

然后例如运行 gradlew aDeb -PcustomRunner 如果您想使用自定义运行器或 gradlew aDeb 进行测试以使用默认值。

我知道这不是火箭科学,但越简单越好,对吧?你也可以在你的插件中使用它,只需获取 Project 对象并做类似的事情。

关于android - 如何使用 gradle 动态切换/更改 testInstrumentationRunner,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31543365/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com