Робоэлектрическая установка

Я пытаюсь запустить Robolectric, следуя руководству по кодированию github. Однако при запуске теста eclipse пытается загрузить org/robolectric/android-all/4.3_r2-robolectric-0/android-all-4.3_r2-robolectric-0.jar . Для чего этот файл 30+ mb .jar? Предполагается ли он заменить файл android.jar из учебника?

Позвольте мне сначала задать вопрос: зачем нам нужен Robolectric для модульного тестирования Android?

И ответ заключается в том, что android.jar поставляется только с контрактами классов и утилитами. Это означает, что каждый метод, каждая функция и конструктор в этой банке имеют только одну строку кода:

 throw new RuntimeException("Stub!"); 

Вы можете компилировать свой код только с этой банкой и никогда не запускаться на JVM на рабочем столе. Если вы попытаетесь запустить, вы получите исключение, как только вы попытаетесь создать экземпляр класса андроида или вызовите любой метод утилиты Android.

Robolectric пытается решить эту проблему. С самого начала он ClassLoader и каждый вызов кода android заменяется реализацией Robolectric . Это дало нам возможность протестировать наш код на рабочем столе JVM. Но это довольно сложно повторно реализовать весь Android, а также вы ловушки в ситуации, когда вы тестируете что-то другое, что присутствует на устройствах.

Таким образом, стратегия была изменена с Robolectric версии 2. Он пытается использовать как можно больше исходный код Android, который открыт с самого начала. Вот почему первый запуск ваших тестов Robolectric загружает и кэширует собственный android.jar, который скомпилирован из источников android. Это делается для того, чтобы наше поведение среды тестирования было близким к поведению, которое у нас есть на устройствах.

Я бы порекомендовал вам больше узнать о Robolectric в своем блоге , группе google . Кроме того, вы можете найти множество презентаций на слайд-шоу и youtube об этом. И я призываю вас внести свой вклад в проект Robolectric на github, как только вы будете уверены в этом, и хотите отдать свою благодарность сообществу.

У меня была такая же проблема, когда я пытался настроить Robolectric в первый раз. Причиной моей проблемы было то, что мои файлы проекта src находились в пакете:

 com.example 

Но мои тестовые файлы не были внутри пакета. Когда я перенес свои тестовые файлы:

 com.example 

Проблема решена. Надеюсь, это поможет.

Intereting Posts