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

Android unit test автоматизация корпуса: библиотека Robolectric vs Android Testing

Удивительно, какой из них лучше выбрать для записи приложений unit test для приложений и библиотек Android: использование библиотеки Robolectric или привязка к платформе Android Testing. Я хочу запустить тестовый пакет в командной строке и хочу, чтобы он не зависел от необходимости настройки эмулятора или подключения устройства со сборкой. Кто-нибудь из вас проводит сравнительный анализ по обоим из них или что-то лучше? Ваш опыт будет очень полезен мне, чтобы принять решение о лучшем решении.

4b9b3361

Ответ 1

Я использую многоуровневую систему, где, когда это возможно, я предпочитаю более ранние уровни:

  • Чистые модульные тесты. Я стараюсь сделать как можно больше кода полностью независимым от Android API, а затем использовать "чистые" модульные тесты, которые могут запускаться на любой JVM. Эти тесты являются самыми быстрыми, и это помогает сохранить код, который не нуждается в переносе Android.
  • Модульные тесты с поддержкой Robolectric. Где мой код имеет только небольшие зависимости от API Android, которые могут быть удовлетворены тенями Robolectric, я тестирую его с помощью Robolectric. Для Robolectric есть немного больше времени для настройки по сравнению с чистыми тестами, но оно все же быстрее, чем запуск/запуск на эмуляторе.
  • Android framework. Где Robolectric не сокращает его - либо потому, что тени не существуют, либо потому, что я сильно использую API Android (и поэтому хочу протестировать против Real Thing) - я пишу тест, который запускается на эмуляторе/устройстве с помощью по умолчанию.

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

Ответ 2

Я работал над обоими, что я нашел: -

1) Robolectric не поддерживает API 19, он упоминает в своем документе -  http://robolectric.org/eclipse-quick-start/. Это отличный  его недостатком.

2) Робоэлектрический запуск на JVM не на DVM. Поэтому мы не можем  обнаружить, что в это конкретное время GPS включен в устройстве или нет  и т.д. Мы можем только передать наше заранее определенное значение для него.

3) Запись кода в Robolectric сложна, чем junit специально для  фрагмента много сложностей и проблем.

4) Robolectric нуждается в внешней банке и конфигурации и для теста junit  нам не нужна внешняя библиотека.

5) Robolectric быстрее, потому что он работает на JVM, но это  Недостаток тоже, мы не можем видеть пользовательский интерфейс на нашем устройстве, какой экранный код  Выполняется.

Для Android мне нравится тест jUnit.