Android: Модульное тестирование приложений Android с помощью Robolectric и Mockito

У меня есть библиотека Java, которая использует некоторые вещи из Android API. Я бы хотел использовать Mockito для написания модульных тестов для этой библиотеки.

Как я могу это сделать?

Mockito плохо работает на виртуальной машине Dalvik, см. Этот пост: Использование Mockito с виртуальной машиной Android

ОБНОВЛЕНИЕ:

После этого поста я обнаружил Robolectric, и у меня был возможность работать в Pivotal Labs и внести небольшой вклад в эту библиотеку. Я бы порекомендовал использовать это поверх тестовой платформы Android / mockito.Кроме того, вы можете использовать Robolectric И Mockito, но теневые объекты в Robolectric делают Mockito ненужным для большинства случаев использования.

Проблема с попыткой модульного тестирования Android заключается в том, что в библиотеке Android, на которой вы строите, все методы заглушены, чтобы либо генерировать исключение-заглушку, либо возвращать null. Если вы хотите протестировать свое приложение и хотите какое-либо поведение Android, вам не повезло, если вы не используете Robolectric, который переписывает байт-код на лету, когда классы загружаются, и вводит теневой объект, который имитирует поведение.

ОБНОВЛЕНИЕ 2:

Прошло время, и все изменилось. Многие классы Shadow в Robolectric были заменены настоящими классами Android. Сейчас используются настоящие jar-файлы Android, а Robolectric загружает классы Shadow только для гораздо меньшего набора вещей. Это еще одна причина использовать Robolectric для тестирования Android.

12
задан Christopher Perry 30 December 2013 в 18:03
поделиться