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