В моем проекте две разные группы тестов. Одна группа работает только с по умолчанию AndroidJUnitRunner
, другая должна запускаться с пользовательской реализацией TestRunner extends MonitoringInstrumentation
.
В настоящее время я переключаю testInstrumentationRunner
, редактируя build.gradle
каждый раз, когда мне нужно запустить другую группу тестов:
android{
defaultConfig {
//testInstrumentationRunner "my.custom.TestRunner"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
}
Я знаю, что у флейворов может быть свой собственный testInstrumentationRunner
, но мое текущее приложение уже имеет 2 flavourDimensions
. Использование вкусов на самом деле предназначено для разных версий приложения. Мне нужны 2 версии тестового приложения, которые тестируют одно и то же приложение с разными testInstrumentationRunner
s.
Я попытался изменить testInstrumentationRunner
, выполнив итерацию по всем тестовым вариантам. На самом деле существует несколько свойств testInstrumentationRunner
:
android.testVariants.all { TestVariant variant ->
//readonly
variant.variantData.variantConfiguration.instrumentationRunner
variant.variantData.variantConfiguration.defaultConfig.testInstrumentationRunner
}
Но как только android.testVariants
вызывается, сборка настроена, и все изменения не отражаются в сборке.
Как я могу изменить testInstrumentationRunner (из плагина gradle) динамически?
Я бы предпочел иметь две разные задачи gradle, каждая из которых использует другой testInstrumentationRunner
, но тестирует один и тот же вариант. Поскольку я намерен создать плагин gradle, решение также должно работать как плагин.