Модульные тесты в Android Studio 0.8

#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