Хотите, чтобы быть в зависимости от AAR для моих модульных тестов в проекте Gradle-Android. Я не хочу вручную включать источник внешней библиотеки или двоичные файлы внутри моего проекта (по нескольким причинам).Тесты на Android-устройства Gradle, которые зависят от «aar»
Мы можем зависеть от удаленных файлов AAR, как это в build.gradle:
compile 'com.facebook:facebook-android-sdk:3.6.0:@aar'
Но при использовании Gradle метод испытания, описанный здесь: https://stackoverflow.com/a/16952507/821636 (С Jake Wharton's plugin, не совсем там еще) , пытаясь включить AAR в качестве зависимости для этого метода, как это:
testLocalCompile 'com.facebook:facebook-android-sdk:3.6.0:@aar
не кажется, на самом деле включают ААР в CLA sspath для тестов (выполняется с ./gradlew check
), так как я получаю NoClassDefFoundError
для классов в ааре. ПРИМЕЧАНИЕ. Когда такие зависимости включены, они работают.
Думаю, что в этой задаче должно быть что-то в этом localTest
задача, которая должна добавить расширение aar, поскольку это не тип зависимости по умолчанию (jar).
Вот копия этой задачи скопированной из SO ответить ссылки выше:
task localTest(type: Test, dependsOn: assembleDebug) {
testClassesDir = sourceSets.testLocal.output.classesDir
workingDir = "${rootProject.projectDir}/app/src/main"
android.sourceSets.main.java.srcDirs.each { dir ->
def buildDir = dir.getAbsolutePath().split('/')
buildDir = (buildDir[0..(buildDir.length - 4)] + ['build', 'classes', 'debug']).join('/')
sourceSets.testLocal.compileClasspath += files(buildDir)
sourceSets.testLocal.runtimeClasspath += files(buildDir)
}
classpath = sourceSets.testLocal.runtimeClasspath
}
Да, предположил, что я могу вручную извлечь lib и включить этот путь, но тогда я делаю что управление зависимостями через файл сборки должно заботиться. Приятно знать, что есть способ взломать его, если необходимо (но потом ресурсы ...) Похоже, что экосистема андроида-град-аар просто еще не существует. –
Я использовал эту строку, по существу, так же, как и в этом аналогичном вопросе, для моего: http://stackoverflow.com/a/24954215/821636 'unitTestCompile fileTree (dir: "$ project.buildDir/intermediates/exploded-aar /" , включают: «**/classes.jar») 'от плагина Android Gradle 0.12.2. Отметьте это как принятое, так как оно превратилось в ответ, который работает до сих пор. –
Любая удача, изменяющая этот метод для работы с ароматами? Когда я добавляю ароматы, testLocal не удается найти _any_ моих классов. –