Я хочу запустить задачу для копирования скриншотов с устройств Android после тестирования пользовательского интерфейса.Я добавил в build.gradle модуль:
tasks.whenTaskAdded { task ->
if (task.name == 'connectedMyAppDebugSources') {
task.finalizedBy {
// here is my task
}
}
}
при использовании этой задачи:
def fetchScreenshotsTask = task('fetchScreenshots', type: Exec, group: 'reporting') {
executable "${android.getAdbExe().toString()}"
args 'pull', '/sdcard/Pictures/screenshots/.', reportDirectory
}
задача запускается в конце, но эта задача не работает, если тесты выполняются на нескольких устройствах,Затем я создал задачу, которая получает идентификатор для всех работающих устройств и запускает еще одну задачу копирования для каждого устройства:
task fetchScreenshotsForAllDeviceTask(group: 'reporting') {
String result = ""
new ByteArrayOutputStream().withStream { os ->
def output = exec {
executable "${android.getAdbExe().toString()}"
args 'devices'
standardOutput = os
}
result = os.toString()
}
List list = result.split('\n')
.collect {it.split('\t').head()}
.drop(1)
for(String item: list) {
createDir(item)
copy(item)
clear(item)
}
}
, и это задача «копирования» для каждого устройства:
def copy(String device) {
def copyTask = exec {
executable "${android.getAdbExe().toString()}"
args '-s', item, 'pull', '/sdcard/Pictures/screenshots/.', reportDirectory
}
}
Проблемаis: Задача fetchScreenshotsForAllDeviceTask запускается в начале тестов, когда я вставляю его в блок:
task.finalizedBy {
// here is my task
}
В то время как «fetchScreenshotsTask» запускается в конце, если я помещаю его в этот же блок.