Как я могу использовать Mockito для проверки кода, работающего в Looper.getMainLooper? - PullRequest
0 голосов
/ 04 октября 2018

Учитывая этот блок кода:

    new Handler(Looper.getMainLooper()).post(new Runnable() {
        @Override
        public void run() {
            _view.displaySomething();
        }
    });

Я хочу вызвать Мокито verify(_view).displaySomething() в моем модульном тесте, но я получаю следующую ошибку:

java.lang.RuntimeException: Method getMainLooper in android.os.Looper not mocked.

Может кто-нибудь указать мне, что я могу сделать, чтобы добиться этого без ошибок?

1 Ответ

0 голосов
/ 05 октября 2018

Это обычная проблема при тестировании классов, связанных с Android, они не имеют реализаций по умолчанию при запуске чистого теста JUnit.

У вас есть две возможности:

  • отделите свою логику от фреймворка Android - тогда вы сможете все проверить без нареканий.Это всегда хорошая идея, чтобы отделить рамки от вашей логики.Это также одна из основных целей всех популярных архитектур, будь то MVP, MVVM или MVI
  • запустить тест как Инструментарий Android Test (с бегуном JUnit Android) - тогда классы из Android SDK просто работают как положено.Недостаток - вы должны использовать устройство или эмулятор, и ваши тесты будут медленнее.
...