Тестирование пользовательского интерфейса Android с MVVM - PullRequest
2 голосов
/ 13 октября 2019

Я использую архитектуру MVVM и Dagger 2 в своем приложении. У меня есть хранилище, которое получает данные с серверов, и когда данные извлекаются, ViewModel уведомляет наблюдателя LiveData, который вызывает метод updateUI() из моей Activity.

Итак, когда я проверяю, какие виды видны сэспрессо, я хочу подождать, пока не позвонят updateUI(). Я не могу издеваться над ViewModel, так как использую Dagger 2, но, за исключением того, что это интеграционный тест, я не хочу делать это в первую очередь.

Thread.sleep() было бы ужасно иНаивное решение для этого, так как слишком малое время ожидания может привести к сбою теста, слишком большое его количество приведет к потере ценного времени, и это также зависит от тестирования и сетевой среды!

Так что же мы делаемделать здесь, каково оптимальное решение этой проблемы?

1 Ответ

1 голос
/ 13 октября 2019

Проведя дополнительные исследования, я обнаружил, что в Espresso уже есть решение этой проблемы, называемое ресурсами на холостом ходу.

Вы можете выбрать подходящую реализацию ресурса холостого хода из списка ниже, чтобы интегрировать ее в свое приложение.

Вы можете начать использовать его в своем приложении, добавив егов ваш файл Gradle, например:

def espresso_version = '3.2.0' 

androidTestImplementation "androidx.test.espresso:espresso-core:$espresso_version"
implementation "androidx.test.espresso:espresso-idling-resource:$espresso_version"

Обратите внимание, что обновленную версию Espresso можно найти в репозитории Google Maven

Образецот Google

Подробнее о ресурсах на холостом ходу

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