У меня есть библиотека 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.