Подтвердить что ты не робот

Unit Test Случаи с JUnit + (Robolectric или Mockito или оба в Android)

Это первый раз, когда я должен писать случаи unit test в Android.

Итак, я много раз искал.

  • Robolectric framewordk - работает на JVM
  • Mockito Framwork - насмешливые объекты

Поэтому у меня есть некоторые сомнения в Robolectric и Mokito.

  • Должен ли я использовать Robolectric только с JUnit в Android-приложении?
  • Должен ли я использовать Mockito только с JUnit в приложении для Android?
  • Должен ли я работать с обоими фреймами?
  • В чем разница между Mockito и Robolectric?

У меня есть поиск разницы между Mokito и Robolectric, но для этого нет никакого правильного ответа.

Просьба предложить.

4b9b3361

Ответ 1

У них немного разные привычки, и я стараюсь использовать оба в своих проектах.

Mockito

используется для создания издевательства над вашими классами.

Когда вы тестируете определенный класс, вы издеваетесь над всеми его зависимостями с Mockito.

По возможности, большинство ваших тестов должны использовать mockito. Чтобы сделать это возможным, большинство людей разбивают свой код на MVP и т.д., Когда бизнес-логика отделена от логики View. Таким образом, ваша бизнес-логика (Presenter) не имеет знаний (или зависимостей) в библиотеке Android и не нуждается в их издевательствах.

Robolectric

- это библиотека, которая содержит много макетов классов Android.

Тест-драйв Robolectric вводит эти "теневые объекты" вместо реальных классов Android, когда тесты выполняются. Это позволяет запускать тесты на JVM без загрузки экземпляра Android.

При использовании MVP ваш слой "Вид", как правило, реализуется Activity/Fragment, и здесь вы можете использовать Robolectric для издевательства над ними.

Примечания

Используйте Robolectric только там, где это необходимо. Он в основном обновляет части платформы Android, но не всегда точно так же.

Вам также может понадобиться другая библиотека, такая как PowerMock. Это позволяет издеваться над статическими классами, такими как Math, или может использоваться для издевательства со статическими классами Android, такими как TextUtils.

Оба используются с JUnit

Ответ 2

Только Мокито может охватывать большинство случаев.

Тем не менее, Robolectric может также предоставлять ограниченные операции с Android-компонентом, например Activity или Fragment, в Unit Test (не проверка инструментария, которая не зависит от Android SDK), которая не требует эмулятора или устройств, и значительно быстрее, чем контрольные испытания.

Мое предложение: используйте Mockito для unit test и Espresso для тестирования пользовательского интерфейса, так как они являются полуофициальными тестовыми платформами для Android.

Добавьте Robolectric в свой unit test, если есть некоторые зависимости от Android SDK.