Robolectri c это юнит или интеграционный тест? - PullRequest
0 голосов
/ 20 января 2020

Я знаю, что на официальном сайте Robolectri c говорят, что этот фреймворк предназначен для модульного тестирования, но на всех примерах robolectri c используется для тестовых видов ... Например: Robolectri c может использоваться для проверки если текст textview X «собака», можно проверить, является ли кнопка нажатой ... Но это не модульный тест ... Это интеграционный тест, и я могу сделать это и с эспрессо тоже ...

Если robolectri c действительно является модульным тестом, я могу использовать это для тестовой модели представления, репозитория, расширений?

Если это для модульного теста, можете ли вы дать мне образец, который показывает тест Viewmodel с использованием только Robolectri c (без Mockito)?

1 Ответ

1 голос
/ 20 января 2020

Несколько лет go Я сообщал некоторые объяснения с их сайта в этой старой записи Я написал

Альтернативный подход к Robolectri c заключается в использовании фиктивных фреймворков такие как Mockito или макет Android SDK. Хотя это правильный подход, он часто дает тесты, которые по сути являются обратными реализациями кода приложения. Roboelectri c допускает стиль тестирования, который ближе к тестированию черного ящика, делая тесты более эффективными для рефакторинга и позволяя тестам сосредоточиться на поведении приложения вместо реализации Android. Вы по-прежнему можете использовать фальшивый фреймворк вместе с Robolectri c, если хотите.

Чтобы понять концепцию Roboelectri c, необходимо понять, что такое Shadows объекты, которые имитируют Android классы. Когда вам нужно протестировать Android реализаций, может быть сложно выполнить Junit Tests, потому что есть множество Android компонентов: Views, Intent, Bundle, Fragments только для того, чтобы назвать некоторые из них как Roboelectri. c мог проверить. Более того, если ваш код тесно связан, может быть сложно запустить тесты пользовательского интерфейса, то есть тесты, которые должны выполняться через эмулятор и довольно медленные, хотя часто и необходимы. Тесты Junit намного быстрее и не нуждаются в эмуляторе. Roboelectri c помогает протестировать определенные c Android компоненты без использования эмулятора.

Пример, который вы запрашиваете для viewModel, действительно является общим c вопросом, потому что ViewModels могут быть действительно разными. Обычно viewModel содержит бизнес-логику c представления без ссылки на представление , поэтому его следует тестировать с помощью Mockito с помощью. В Stackoverflow у нас нет express мнений относительно того, какой фреймворк используется, поэтому я бы не стал судить. Как следствие, любой пример Roboelectri c должен прояснить вам, как использовать его в viewModel или в каком-либо другом месте, вид может быть лучшим местом. Обратите внимание, что Roboelectri c, как и у каждого фреймворка, имеет свои плюсы и минусы, но мы не можем обсуждать это на StackOverflow, исследование inte rnet и ваши игрушечные проекты подойдут вам.

Кроме того, когда вы проводите тестирование Junit, вы тестируете изолированно, поэтому класс имеет относительное значение, поскольку существует бизнес-логика c для тестирования SUT тестируемой системы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...