Для начала вот скрипт, который можно добавить в файл build.gradle
и выполнять работу по копированию файлов из определенной папки и размещению их на устройстве.
Я хочу отметить, что у @m-reza-nasirloo есть мнение о хранении этих файлов в репозитории, и поэтому это необходимо учитывать при разработке надлежащего теста, имея репозиторий небольшого размера, который можно поддерживать, а сервер CI или товарищ по команде мог легко загрузить клон. С помощью приведенного ниже сценария тестовые файлы могут быть размещены вне корневого каталога проекта и достигнуты эти точки.
Также еще один момент заключается в том, что этот скрипт предполагает, что каталог тестовых файлов (здесь это testFiles
) содержит только файлы, а не подкаталоги. Для обработки подкаталогов потребуются дополнительные настройки.
Кроме того, скрипт будет распространяться на все подключенные устройства. Поэтому, если вы запускаете тесты из Android Studio, устройства, которые вы не выбрали для запуска, также получат файлы.
Наконец, этот скрипт будет выполняться при сборке тестов для Android, особенно когда gradle выполняет assembleDebugAndroidTest
или аналогичные задачи. Чтобы изменить это, просто измените условие if по своему усмотрению.
import com.android.ddmlib.AndroidDebugBridge
task pushFilesToDevices {
def location = "${project.rootDir}/../testFiles/"
def files = new File(location).listFiles()
AndroidDebugBridge.initIfNeeded(false)
def bridge = AndroidDebugBridge.createBridge(android.adbExecutable.path, false)
doLast {
bridge.devices.each { device ->
println "pushing files to ${device.name}"
files.each { file ->
device.pushFile(file.absolutePath, "/sdcard/${file.name}")
}
println "finished pushing"
}
}
}
tasks.whenTaskAdded { taskItem ->
if (taskItem.name.contains("assemble") && taskItem.name.endsWith("AndroidTest")) {
taskItem.dependsOn pushFilesToDevices
}
}
person
ahasbini
schedule
29.03.2018
READ_STORAGE
. - person PhilLab   schedule 28.03.2018