Почему я не могу использовать задачу gradle connectedDebugAndroidTest в моей сборке script?

Я могу ссылаться на задачу connectCheck (которая появилась из плагина android) из моей сборки script:

connectedCheck.finalizedBy AndroidShowTestResults

Но пытаясь использовать connectedDebugAndroidTest (который также появился из плагина android)

connectedDebugAndroidTest.finalizedBy AndroidShowTestResults

дает мне

Ошибка: (48, 0) Не удалось найти свойство 'connectedDebugAndroidTest' в проекте ': app'.

И если я попробую

task connectedDebugAndroidTest << {print '123'}

он проклинает меня с помощью

Ошибка: не может добавить задачу ': app: connectedDebugAndroidTest', поскольку задача с этим именем уже существует.

Я не понимаю, почему я не могу ссылаться на connectedDebugAndroidTest?

Доступные задачи gradle показаны ниже:

Gradle tasks

Ответ 1

Плагин android откладывает добавление нескольких задач, особенно тех, которые имеют имена buildType или аромата в них до очень позднего этапа настройки. Это, в свою очередь, означает, что если вы попытаетесь сослаться на эти еще не заданные задачи по имени, вы, вероятно, увидите сообщения об ошибках типа "не существует". Если вы хотите добавить зависимости от отложенных задач, вам нужно дождаться завершения конфигурации:

gradle.projectsEvaluated {
    connectedDebugAndroidTest.finalizedBy AndroidShowTestResults
}

В качестве альтернативы вы можете добавить прослушиватель к событиям графика задач, чтобы вы могли делать что-то, как только к задаче-графику добавляется определенная задача:

tasks.whenTaskAdded { task ->
    if (task.name == 'connectedDebugAndroidTest') {
        task.finalizedBy AndroidShowTestResults
    }
}

Ответ 2

Попробуйте

task connectedTest(dependsOn: ["connectedDebugAndroidTest"]){

}
connectedTest.finalizedBy "AndroidShowTestResults"

Ответ 3

Я думаю, вам стоит попробовать открыть тест и перестроить.

введите описание изображения здесь