У меня есть библиотека Java, которая использует некоторые вещи из API Android. Я хотел бы использовать Mockito для написания модульных тестов для этой библиотеки.
Есть ли способ, которым я могу это сделать?
Mockito не играет хорошо на VM Dalvik, см. это сообщение: Использование Mockito с виртуальной машиной Android
UPDATE:
С этого поста я открыл Robolectric, и у меня была возможность работать в Pivotal Labs и внести небольшой вклад в эту библиотеку. Я бы рекомендовал использовать это в рамках платформы Android/mockito. Кроме того, вы можете использовать Robolectric и Mockito, но теневые объекты в Robolectric делают Mockito ненужным для большинства случаев использования.
Проблема с попыткой unit test Android заключается в том, что в библиотеке Android, на которой вы строите, есть каждый метод, который вызывается либо для исключения исключений-заглушек, либо для возврата null. Если вы хотите протестировать свое приложение и хотите, чтобы какое-либо поведение Android вам не повезло, если вы не используете Robolectric, который перезаписывает байтовый код "на лету" при загрузке классов и вводит теневой объект, который имитирует поведение.
ОБНОВЛЕНИЕ 2:
Это было время, и все изменилось. Многие из классов Shadow в Robolectric были заменены настоящими классами Android. Настоящие Android-банки теперь используются, и Robolectric загружает классы Shadow для гораздо меньшего множества вещей. Это еще больше повод для использования Robolectric для тестирования Android.