Я столкнулся с проблемой, используя следующую ситуацию:
Чтобы запускать разные нативные тестовые плагины подряд, я динамически создаю несколько задач, чтобы соответствующим образом подготовить среду для каждого плагина, а затем создаю plugin_task
для каждого тестового плагина, в котором размещены зависимости.
Чтобы запустить тесты на устройстве, plugin_task имеет значение finalizedBy connectedAndroidTest
.
Так, например. вызов gradle plugin_name_1
работает нормально, подготавливает среду и запускает тесты.
tasks.register("allTests"){}
name_list.each { test_name ->
def prepare_dir = tasks.register("${test_name}_Prepare_Dir") {...}
def copy_files = tasks.register("${test_name}_Copy_Files") {...}
def plugin_task = tasks.register(test_name){
dependsOn prepare_dir
dependsOn copy_files
finalizedBy connectedAndroidTest
}
allTests.configure {
dependsOn pluginTask
}
}
Теперь проблема возникает, когда я пытаюсь запустить задачу allTests:
Затем gradle корректно работает над всеми динамически созданными задачами «prepare_dir», «copy_files» для каждого из плагинов, все они выполняются.
Но connectedAndroidTest будет выполняться только в самом конце allTests, поэтому запускается только один раз. Но мне нужно, чтобы эта задача выполнялась на каждом конце каждой plugin_task.
Поведение gradle правильное, так как он видит, что все plugin_tasks должны быть завершены с помощью connectAndroidTest, и поэтому помещает его в конец графика.
Есть ли возможность заставить Gradle выполнять эту задачу несколько раз? Был бы рад помощи.
Оборачивая задачу connectedAndroidTest в динамически создаваемые задачи и позволяя plugin_tasks зависеть от них, это не помогает. Также не действует параметр "rerun-tasks".