8

Кто-нибудь успешно получил Robolectric и Espresso, работающие вместе с Gradle (Android Studio)?Gradle, Robolectric и Espresso

Я получил Robolectric, работающий в студии Android, в основном из-за поста Peter Friese http://www.peterfriese.de/android-testing-with-robolectric/, но я не уверен, как интегрировать Espresso из-за столкновений с инструментами/инструментами.

В идеале я бы структуру каталогов, как следующее:

|--src 
    └── main (application source - exists) 
    └── test (Robolectric unit tests go here - exists) 
    └── testEspresso [*new*] (espresso tests go here) 

My Gradle + Android знания не очень обширна, и я уверен в том, что это действительно возможно, что (время, сложность и уровень хрупкости не слишком экстремальны), учитывая текущее состояние Gradle + Android, и если да, то как это сделать. Кроме того, если это имеет значение, у меня есть два разных стиля сборки.

+0

Define «возможно.» –

+0

@RobertHarvey Я предполагаю, что возможно, если время, сложность и уровень хрупкости предлагаемого решения не являются ужасными. Я обновил свой пост, чтобы отразить это :) – loeschg

+0

@loeschg - У вас были проблемы с robolectric, видя ваши ресурсы? У меня также есть несколько вариантов сборки, и robolectric не видит моих ресурсов. –

ответ

8

Для хорошего примера Robolectric и Espresso работать вместе в гармонии, проверить этот образец проект, созданный командой Robolectric:

https://github.com/robolectric/deckard-gradle

+1

Я не согласен с тем, что Декард работает в гармонии. Для меня его нельзя использовать из-за таких проблем, как https://github.com/robolectric/robolectric-gradle-plugin/issues/17 Другие шаблоны работают лучше, чем https://github.com/nenick/android-gradle-template или https : //github.com/JCAndKSolutions/android-unit-test – nenick

+0

@nenick Мой ответ старше 6 месяцев. С тех пор многое изменилось. Благодарим вас за предоставление лучших примеров. – plackemacher

+0

См. Fork для той же градиентной градации, но с андроидным блоком-тестом (robolectric и espresso разделены): [email protected]: almozavr/deckard-gradle.git –

2

Другой вариант, который не включает никаких «взломов, плагинов Gradle, плагинов IDE или редактирования IML», - http://blog.blundell-apps.com/android-gradle-app-with-robolectric-junit-tests/. Джейк Уортон рекомендовал этот подход. При этом ваши тесты Robolectric находятся в отдельном модуле Java, отдельно от вашего основного проекта. Код эспрессо живет с вашим основным проектом.

Использование двойного эспрессо JW (https://github.com/JakeWharton/double-espresso) упростит, включая эспрессо и безумство управления зависимостью, которое может прийти с ним.

Решение @plackemacher, упомянутое, gradard-gradle, по-прежнему является опцией и поддерживается, хотя для работы с IDE требуется хакерство/операция.

Update: Смотрите обсуждение здесь о Robolectric и Gradle (относится к Gradle): https://groups.google.com/forum/#!topic/robolectric/xsOpEwtdTi4/discussion

Update: В то время как я не использовал его, это выглядит билет. https://github.com/JakeWharton/double-espresso.


В настоящее время, я решил создать отдельную ветку Espresso (GIT), который имеет правильную TestRunner и каталоги теста набор. Не ужасное изящное решение ... требует некоторой бдительности, чтобы держать все в курсе, но оно работает сейчас!

Обязательно измените ответ, если кто-нибудь найдет лучшее решение.

+0

Как она себя ведет в долгосрочной перспективе?Я боюсь, что разветвление - довольно плохая идея для такого рода использования ... – fstephany

+0

Я больше не работаю над проектом, для которого это было сделано, поэтому я не могу комментировать: P. См. Мой обновленный ответ. – loeschg

+0

@fstephany Я бы определенно сказал, НЕ делай отдельную ветку, как я и предложил. Есть более надежные способы сделать это сейчас. Я обновляю свой ответ. – loeschg

Смежные вопросы