- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我的项目有 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
测试同一个应用程序。
我尝试通过迭代所有测试变体来更改 testInstrumentationRunner
。 testInstrumentationRunner
属性其实有多个:
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/
我的项目有 2 组不同的测试。一组仅使用默认的 AndroidJUnitRunner 运行,另一组必须使用自定义实现 TestRunner extends MonitoringInstrumentat
我是一名优秀的程序员,十分优秀!