Я тестирую сервис с использованием Robolectric 3. После запуска он регистрирует анонимный BroadcastReceive, ожидающий, что система отправит широковещательную передачу после некоторого события.В тесте Robolectric, как ждать сообщений в главном петлере для запуска?
В тесте я инициализирую службу, чтобы она регистрировала BroadcastReceiver, затем я запускаю системное событие, а затем проверяю, что состояние службы изменилось соответствующим образом после обработки широковещательной передачи. Но поскольку метод onReceive
выполняется асинхронно, утверждения запускаются слишком быстро.
Но с использованием Thread.sleep
в тесте не сработало (и, по-моему, это запах кода), onReceive
не называется.
Выполнение пошаговой отладки в коде Robolectric. Я вижу, что BroadcastReceiver правильно зарегистрирован, и широковещательная передача отправляется в планировщик основного петлетера, но затем ничего не происходит.
Итак, как я могу заставить главный планировщик запускать ожидающие действия и позволить моему тесту ждать их завершения?