Как добавить зависимости testCompile в путь к классам IDE
Я боролся с проблемой юнит-тест-андроид довольно давно. Я видел это, это и то, наконец, я нашел плагин gradle-android-test-plugin и даже заставил его работать. Теперь я могу запустить тесты с gradlew test
команда.
Но писать эти тесты в IDE (Android Studio или IntelliJ 13) далеко не так удобно, потому что они не видят зависимости junit и Robolectric, добавленные с помощью testCompile
зависимость.
Есть ли способ добавить эти зависимости в путь к классам IDE, но все же избегать их упаковки в производственное приложение (таким образом, AFAIU compile
зависимость не может быть использована)?
4 ответа
У меня была такая же проблема с IntelliJ 14.1.3 сегодня. Решение состояло в том, чтобы выполнить шаги, изложенные здесь. В принципе:
- Добавьте JUnit и другие зависимости через
testCompile 'junit:junit:4.+'
, этц - Поместите тестовые источники в
src/test/java/...
- Чтобы среда IDE нашла тестовые зависимости (gradle найдет их в порядке), откройте представление "Build Variants" и установите для "Test Artifact" значение "Unit Test". В "Структуре проекта" зависимости тестирования должны отображаться в вашем модуле с областью "Тест"
- Командная строка для запуска теста
testXxx
, гдеXxx
это тип сборки (debug/release/etz).
Важным шагом здесь является шаг в представлении "Build Variants". После того, как вы измените его на "Unit Test", он будет проиндексирован, и ваши библиотеки и полное автозаполнение будут доступны.
Вы можете использовать встроенный idea
плагин. Это должно установить тестовые зависимости для вас. Вам нужно будет импортировать плагин:
apply plugin: 'idea'
Тогда беги gradle idea
, чтобы сгенерировать файл модуля (*.iml
) и перезагрузите ваш проект. Обратите внимание, что для этого вам придется использовать конфигурацию идей, не основанную на каталогах.
Для моих тестовых зависимостей Android я использую instrumentTestCompile вместо testCompile. Это работает для меня при запуске моих тестов в Android Studio. Надеюсь это поможет.
В IntelliJ IDEA вам нужно настроить несколько вещей в вашем build.gradle
// add idea plugin
apply plugin: 'idea'
// make sure `configurations.testCompile` is added to idea.module
idea {
module {
scopes.TEST.plus += [ configurations.testCompile ]
}
}
Для получения дополнительной информации см.: http://www.gradle.org/docs/current/dsl/org.gradle.plugins.ide.idea.model.IdeaModule.html
Любая зависимость включена в testCompile
будет автоматически импортирован в IDEA.