Задание тестовых зависимостей с помощью системы сборки Gradle Android
Я хочу указать зависимости для своих тестов и после прочтения Gradle Основы управления зависимостями. Хотя я мог просто добавить вызовы testCompile
к моим объявлениям зависимостей:
dependencies {
compile group: 'com.squareup.dagger', name: 'dagger', version: '1.0.0'
testCompile group: 'junit', name: 'junit', version: '4.11'
testCompile group: 'com.squareup', name: 'fest-android', version: '1.0.1'
}
Однако это сообщение об ошибке не появляется:
> Could not find method testCompile() for arguments [{group=junit, name=junit, version=4.11}] on project ':simstatus'.
Я что-то пропустил?
(Полный gradle файл сборки для справки)
Ответы
Ответ 1
Система сборки Android не использует стандартный плагин Java Gradle.
В его документации говорится:
Как упоминалось ранее, рядом с основным исходным кодом SetSet является androidTest sourceSet, который по умолчанию находится в src/androidTest/
Кроме того, sourceSet может быть настроен на наличие собственных зависимостей. По умолчанию приложение и его собственные зависимости добавляются в путь класса test test, но его можно расширить с помощью
dependencies {
androidTestCompile 'com.google.guava:guava:11.0.2'
}
Ответ 2
Просто, чтобы ответить на этот вопрос в полном объеме, это то, что необходимо для решения проблемы. Поскольку Junit требуется для локального тестирования, а guava может потребоваться для androidTest, DSL для Android должен содержать следующее:
android {
:
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src/main/java']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
:
}
test {
java.srcDirs = ['src/test/java']
resources.srcDirs = ['src/test/resources']
:
}
androidTest.setRoot('tests')
}
:
}
The: означает другие утверждения, которые вам нужны. Также обратите внимание, что папки могут быть другими, чем те, что указаны выше.