Как добавить зависимости testCompile в путь к классам IDE

Я боролся с проблемой юнит-тест-андроид довольно давно. Я видел это, это и то, наконец, я нашел плагин gradle-android-test-plugin и даже заставил его работать. Теперь я могу запустить тесты с gradlew test команда.

Но писать эти тесты в IDE (Android Studio или IntelliJ 13) далеко не так удобно, потому что они не видят зависимости junit и Robolectric, добавленные с помощью testCompile зависимость.

Есть ли способ добавить эти зависимости в путь к классам IDE, но все же избегать их упаковки в производственное приложение (таким образом, AFAIU compile зависимость не может быть использована)?

4 ответа

У меня была такая же проблема с IntelliJ 14.1.3 сегодня. Решение состояло в том, чтобы выполнить шаги, изложенные здесь. В принципе:

  1. Добавьте JUnit и другие зависимости через testCompile 'junit:junit:4.+', этц
  2. Поместите тестовые источники в src/test/java/...
  3. Чтобы среда IDE нашла тестовые зависимости (gradle найдет их в порядке), откройте представление "Build Variants" и установите для "Test Artifact" значение "Unit Test". В "Структуре проекта" зависимости тестирования должны отображаться в вашем модуле с областью "Тест"
  4. Командная строка для запуска теста 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.

Другие вопросы по тегам