Как скопировать средства отладки для модульных тестов

У меня есть проект градиента библиотеки андроидов. И мне нужно скопировать некоторые файлы в папку с данными для тестов с помощью robolectric.

Для этого я определил задачу копирования:

task copyDebugAssets(type: Copy) { from "${projectDir}/somewhere" into "${buildDir}/intermediates/bundles/debug/assets" } 

Но я не могу добавить эту задачу в качестве зависимости для задачи processDebugResources :

 processDebugResources.dependsOn copyDebugAssets 

Из-за этой ошибки:

Не удалось получить неизвестное свойство «processDebugResources» для объекта типа com.android.build.gradle.LibraryExtension.

Теперь я должен выполнить эту задачу вручную перед модульным тестом:

 ./gradlew clean copyDebugAssets test 

Как я могу это решить?

Зачем копировать? Настройте, откуда следует извлекать активы:

 android { // other cool stuff here sourceSets { androidTest { assets.srcDirs = ['../testAssets'] } } } 

(Заменив ../testAssets на путь, откуда должны поступать активы)

Я использовал это с помощью androidTest для тестирования аппаратуры. AFAIK, он должен работать для test или любого другого источника.

Плагин android добавляет несколько задач динамически. Линия .dependsOn не работает, потому что в то время, когда град пытается обработать эту строку, processDebugResources еще недоступен. Вы должны сказать gradle, чтобы добавить зависимость, как только задача вверх по течению доступна:

 tasks.whenTaskAdded { task -> if (task.name == 'processDebugResources') { task.dependsOn copyDebugAssets } } 
Intereting Posts