Подтвердить что ты не робот

Почему библиотечный модуль android.support.test не отображается в зависимости от зависимостей

Я добавляю Espresso в свой проект в Android Studio. Я установил репозиторий поддержки и на самом деле уже использовал его. Затем я добавил эти зависимости в app/build.gradle в соответствии с инструкциями по установке:

androidTestCompile 'com.android.support.test.espresso:espresso-core:2.0'
androidTestCompile 'com.android.support.test:testing-support-lib:0.1'

при написании моего теста, auto complete распознает наличие артефактов. Но когда я бегу, я получаю эту ошибку:

error: package android.support.test does not exist
error: package org.junit does not exist

и ряд других подпакетов к этим двум.

Итак, я удалил две выше строки из build.gradle и попытался добавить в структуру проекта/модули/зависимости GUI

none 'com.android.support.test.espresso: espresso-core: 2.0' nor 'com.android.support.test: testing-support-lib: 0.1' отображаются как опции на выбор. Однако в моей файловой системе есть <sdk>\extras\android\m2repository\com\android\support\test\espresso\espresso-core\2.0\ с полным набором файлов, включая espresso-core-2.0.aar, который я могу открыть и перемещаться внутри него через winzip. В файловой системе он выглядит не иначе, как другие библиотеки, установленные через SDK Manager с репозиторием поддержки.

Почему студия Android не распознает эту библиотеку?

Ваша помощь очень ценится, никто другой, что я могу найти, похоже, столкнулся с этой проблемой. Это самое близкое, что я мог найти: Почему пакеты из библиотечного модуля не существуют при компиляции, даже если Android Studio не показывает ошибок в коде?

Я попытался дважды установить репозиторий поддержки.

4b9b3361

Ответ 1

У меня была такая же проблема, и я обнаружил, что зависимости с androidTestCompile видны только по умолчанию в варианте сборки отладки.

Вы можете изменить вариант сборки, который нужно протестировать, добавив это в свой build.gradle:

android {
    ...
    testBuildType "staging"
}

где "постановка" - это просто пример, вы должны заменить его одним из вариантов сборки.

Помните, что проверен только один вариант.

Дополнительная информация здесь https://code.google.com/p/android/issues/detail?id=98326

Ответ 2

У меня тоже была эта проблема, и у меня есть тесты для Android в src/androidTests, рекомендованные Google, но это вызвало проблемы с build.gradle:

sourceSets {
    main {
        java.srcDirs = ['src']
    }
}

С помощью вышеизложенного он пытается скомпилировать все мои тестовые примеры в рамках обычной цели компиляции отладки, которая не включает в себя эспрессо и другие зависимости, поскольку они перечислены в androidTestCompile.

В конце я исправил это, исключив подкаталог androidTest из компиляции и установив корень androidTest в соответствующий каталог.

sourceSets {
    main {
        java.srcDirs = ['src']
        java.excludes = ['androidTest/**']
    }
    androidTest.setRoot('src/androidTest')
}

Ответ 3

Существуют две различные конфигурации зависимостей тестов:

  • testCompile - используется unit test suite (находится в папке src/test и вызывается ./gradlew test)
  • androidTestCompile - используется тестовым пакетом интеграции (находится в папке src/androidTest и вызывается ./gradlew connectedAndroidTest).

Мое подозрение в том, что ваш тестовый код находится в неправильном месте набора тестов

В вашем случае ваш тестовый код должен войти в папку src/androidTest, а тестовый набор должен быть запущен, запустив ./gradlew connectedAndroidTest

Ответ 4

У меня была такая же проблема, и она была решена, нажав "Чистый проект" со вкладки "Сборка" в Android Studio.

После того, как вы нажмете "Чистый проект", просмотрите консоль Gradle для возможных ошибок и, если она успешно завершит очистку, просто зайдите в любой из ваших тестовых классов и введите "Espresso", а для завершения интеллектуального кода должны быть предложения. Все должно автоматически импортироваться, когда вы используете Espresso после этого.

Надеюсь, это поможет!

Ответ 5

Мое решение было проще и проще, я просто пошел в Android Studio File>Invalidate Caches/Restart, и он работал правильно, кажется, что в студии Android есть кеш, который не будет очищаться с помощью Rebuild/Clean.

Ответ 6

Я столкнулся с этой проблемой при переадресации одного из моих приложений в новую визуальную парадигму и обнаружил, что на моем уровне сборки build.gradle отсутствовало следующее:

androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
    exclude group: 'com.android.support', module: 'support-annotations'
})

Ответ 7

1.Щелкните выпадающее меню рядом с кнопкой "Выполнить" на панели инструментов.

2.Нажмите "Изменить конфигурацию"

3.Не удалите все остальные, кроме приложения (в приложении Android) и по умолчанию.

Это сработало для меня. Надеюсь, что это поможет.