20

ここでobserveForever()説明されている方法を使用して、Room と LiveData をしばらくテストしてきましたが、問題なく動作しました。しかし、Android Studio 3.2 に変更したとき (またはリファクタリングの場合は不明)、そのメソッドは突然動作を停止し、androidx

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

どうすればこれを修正できますか?

4

2 に答える 2

40

ルールを追加して解決しましたInstantTaskExecutorRuleドキュメントによると、

アーキテクチャ コンポーネントによって使用されるバックグラウンド エグゼキューターを、各タスクを同期的に実行する別のエグゼキューターと交換する JUnit テスト ルール。

したがって、追加する必要があります

@get:Rule
val instantTaskExecutorRule = InstantTaskExecutorRule()

それが機能するためのテストクラスに。Java に相当するものは次のようになります。

@Rule
public InstantTaskExecutorRule instantTaskExecutorRule = new InstantTaskExecutorRule();

また、追加する必要があります

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

モデルのbuild.gradle依存関係に。

于 2018-09-11T11:32:41.017 に答える