#android #unit-testing #android-studio
#Android #модульное тестирование #android-студия
Вопрос:
ПОСЛЕДНИЕ НОВОСТИ: Android Studio 1.1.0 теперь имеет встроенную поддержку модульного тестирования. Подробнее смотрите здесь: https://sites.google.com/a/android.com/tools/tech-docs/unit-testing-support
Сначала я знаю, что есть очень, очень, очень похожие вопросы (даже здесь, на SO). Большинство из них ужасно устарели, поэтому я задаю новый новый вопрос, который должен быть актуальным для Android Studio 0.8.x.
Я знаю, что есть некоторые библиотеки, которые каким-то образом работают, но почти в каждом случае у меня не было доказательств того, что информация была актуальной. Я знаю, что есть, например, roboelectric, есть также некоторые устаревшие Jake Wharton, такие как gradle-android-test-plugin или double-espresso, я также нашел библиотеки RoboSpock и Deckard. Но ни один из них, похоже, не имеет никакой интеграции с Android Studio.
После долгого поиска я обнаружил эти две ошибки во всех реализациях:
- Путь к классу поврежден и должен быть взломан, чтобы запустить junit
- Тесты junit не могут быть отлажены
То, что я ищу:
- Я хочу автоматически протестировать алгоритм (который является простым java)
- Я хочу проверить, работает ли интеграция в моем приложении для Android
- Мне нужна интеграция в Android Studio, чтобы я мог переходить к коду из stacktrace
- Я хочу пройти через тестовый код
Я также нашел где-то хороший хак, который запускает тесты в gradle как внешнюю задачу и помещает результаты в AS, чтобы результаты могли отображаться, но, к сожалению, я не могу найти эту ссылку снова (и, если я правильно помню, она также не работала для меня).
У вас, ребята, есть какие-нибудь свежие рекомендации? Работает ли это для вас?
Ответ №1:
Вам необходимо отредактировать файл .iml, который генерирует Android Studio, чтобы указать на ваш каталог тестовых классов, а также исправить ошибку заглушки из Junit. В настоящее время для этого нет никаких обходных путей.
Gradlectric — это образец, который использует плагин Robolectric Gradle для запуска модульных тестов в Android Studio.
Комментарии:
1. Я попытался реализовать это, как в вашем проекте, однако я всегда заканчиваю на классе, который не найден: «com.example.test. Ошибка «FirstTest» .
2. Ну, я использовал это исправление , теперь оно работает.
3. Спасибо за ссылку, я обновил свой репозиторий, чтобы включить недостающий шаг.
Ответ №2:
Здесь вы пропускаете один пример настройки проекта https://github.com/nenick/android-gradle-template
Но ни один из них, похоже, не имеет никакой интеграции с Android Studio.
Этот проект поддерживается для Android studio
Путь к классу поврежден и должен быть взломан, чтобы запустить junit
скрипты gradle исправят путь к классу
Тесты junit не могут быть отлажены
тесты выполняются внутри AS, поэтому их легко отлаживать
Комментарии:
1. Я использовал принятый ответ, смешанный с вашим ответом. Однако я могу просто принять один ответ, чтобы вы получили 1.
Ответ №3:
Этот мой проект охватывает не все ваши запросы, но их довольно много. Он охватывает тестовый пример Java по умолчанию и некоторые тесты, взаимодействующие с представлениями.
Корневой проект использует Travis CI, который используется gradle connectedCheck
для запуска тестов. Чтобы иметь возможность отлаживать тесты, вы можете просто создать конфигурацию тестового запуска в AS и запустить ее в режиме отладки.
Обратите внимание, что при этом не используются какие-либо специальные платформы тестирования Android, такие как robolectric.
Комментарии:
1. Трудно понять, что файлы gradle проекта, поскольку вы ссылаетесь на файлы, которых, похоже, нет в системе управления версиями. Где отображаются результаты (в случае ошибки) только в виде html / xml-файла в каталоге сборки или где?
2. Все находится в системе управления версиями. Возможно, вам придется перейти к корню, так как весь проект состоит из нескольких модулей. В этом модуле есть несколько тестов. Файлы gradle, используемые
apply from: ...
не имеют ничего общего с модульными тестами. Используя команду gradle, результаты будут отображаться в виде html / xml действительно, при запуске тестовой конфигурации в AS вы получите хороший результат в графическом интерфейсе AS.3. Мне нужно это проверить. Я оставлю еще один комментарий, когда закончу. (Это может занять некоторое время, я сейчас исправляю кое-что еще)
Ответ №4:
Вы можете найти ответвление плагина gradle-android-test от Джейка Уортона здесь. Это совместимо с AS 0.6 и регулярно поддерживается Robolectric. Вы можете посмотреть этот проект, чтобы настроить Robolectric в Android Studio с помощью этого плагина. Вы можете достичь изрядной части функциональности, о которой вы упомянули, с помощью robolectric-gradle-plugin. Вы также можете успешно отладить свой тестовый код, используя AS .
Комментарии:
1. Ну, у меня большая проблема с Deckard (проекты) Я хочу расширить существующий проект. Это вообще не объясняется на их страницах. Моя проблема с этим плагином maven заключается в том, что у меня не установлен maven, даже тот
brew
, о котором я никогда не слышал. Можете ли вы просветить меня в этих вопросах?2. Какую операционную систему вы используете? Кроме того, процедура очень похожа для нового или существующего проекта, если вы используете проект Android Studio. Следуйте инструкциям, приведенным здесь — github.com/robolectric/robolectric-gradle-plugin