Лучшая практика для тестирования проектов библиотеки Android?

Я совсем недавно начал переходить на Android Studio и Gradle, и мой первый проект — это небольшая библиотека, которая теперь будет собираться через gradle. Поскольку в какой-то момент я хочу отправить это в центральный центр maven, я хотел бы интегрировать надежные модульные тесты. Я просмотрел некоторые библиотеки, такие как HoloColorPicker и Actionbarsherlock, но ни одна из них не тестируется через gradle.

Я действительно хотел бы иметь возможность создавать классические тесты JUnit 4 для простых вещей, таких как тестирование служебных классов, которые не зависят от классов Android, и тестов Android для всего остального. В моей библиотеке нет классов пользовательского интерфейса, и я хотел бы предотвратить создание «тестового приложения», которое затем можно было бы инструментировать (представляет большую сложность и усложняет работу тестов). В принципе, было бы здорово, если бы даже тесты, зависящие от Android, выполнялись на JVM (например, с robolectric), а не на устройстве.

Конечно, мне также нужна полная интеграция IDE с Android Studio для таких вещей, как прямой поиск опечаток, завершение кода, организация импорта, рефакторинг и т. д.

Я прочитал много статей по этим темам, но каждое решение имело серьезные недостатки. Интеграция Robolectric кажется очень сложной, и все плагины, которые я нашел, устарели. Я надеюсь, что кто-то из вас столкнулся с похожей проблемой и может дать совет, как проводить модульное тестирование в проектах библиотек Android.

Заранее спасибо.


person Till Klocke    schedule 19.04.2014    source источник


Ответы (1)


Лично я работаю двумя способами, когда дело доходит до тестирования: Android-тесты и genymotion (что быстрее, чем эмуляторы или настоящие устройства) и robolectric. Слабая сторона тестов Android, которую я нахожу, заключается в том, что вы застряли с jUnit3 и что инструментальная часть довольно многословна. Хорошая часть заключается в том, что вы получаете все, что работает прямо из коробки в Android Studio. Я также написал библиотеку с ок. 250 тестов, и этот способ был достаточно хорош (хотя в конце он начал тормозить).

Слабая сторона Robolectric в том, что он не работает сразу из коробки и требует небольших усилий для настройки. Мне не удалось запустить тесты через AS, но с терминалом все просто. Лично я использую этот плагин для запуска тестов

https://github.com/JCAndKSolutions/android-unit-test

так как это позволяет мне запускать отдельные тестовые классы.

person John Nilsen    schedule 22.04.2014
comment
Я уже нашел плагин android-unit-test. К сожалению, кажется, нет пригодной для использования интеграции с IDE. На данный момент я, вероятно, буду придерживаться классического тестирования Android и создавать тестовые приложения для своих библиотек. - person Till Klocke; 04.05.2014
comment
Да, интеграция с IDE — это очень хитрый банкомат. Если интеграция с IDE является обязательной, то я думаю, что старомодные тесты для Android — лучший способ. Лично я использую терминал для выполнения своих тестов и просмотра результатов в браузере ;-) - person John Nilsen; 05.05.2014