Невозможно вызвать ObforveForever в фоновом потоке - PullRequest
0 голосов
/ 11 сентября 2018

Я использовал метод observeForever(), как описано здесь , чтобы некоторое время тестировать Room и LiveData, и он работал безупречно. Но когда я перешел на Android Studio 3.2 (или если это был рефакторинг androidx, не уверен), этот метод неожиданно перестал работать, выдав

java.lang.IllegalStateException: Cannot invoke observeForever on a background thread

Как мы можем это исправить?

1 Ответ

0 голосов
/ 11 сентября 2018

Я решил это, добавив правило InstantTaskExecutorRule. Согласно документам это будет

Правило тестирования JUnit, которое заменяет фонового исполнителя, используемого компонентами архитектуры, на другой, который выполняет каждую задачу синхронно.

Так что нужно добавить

@get:Rule
var instantTaskExecutorRule = InstantTaskExecutorRule()

к тестовому классу, чтобы он работал. Эквивалент Java будет

@Rule
public InstantTaskExecutorRule instantTaskExecutorRule = new InstantTaskExecutorRule();

Вам также нужно будет добавить

androidTestImplementation "androidx.arch.core:core-testing:2.0.0"

к вашим зависимостям build.gradle.

...