Почему библиотечный модуль 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 не показывает ошибок в коде?
Я попытался дважды установить репозиторий поддержки.
Ответы
Ответ 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) и по умолчанию.
Это сработало для меня. Надеюсь, что это поможет.