説明されているようにobserveForever()
メソッド here を使用してRoomとLiveDataをしばらくテストしてきましたが、問題なく動作しました。しかし、Android Studio 3.2に変更した場合(またはandroidx
リファクタリングであるかどうかは不明です)、そのメソッドは突然機能を停止し、
Java.lang.IllegalStateException: Cannot invoke observeForever on a background thread
どうすればこれを修正できますか?
ルールInstantTaskExecutorRule
を追加して解決しました。 docs によると、
アーキテクチャコンポーネントが使用するバックグラウンドエグゼキュータを、各タスクを同期的に実行する別のエグゼキュータと交換するJUnitテストルール。
追加する必要があります
@get:Rule
val instantTaskExecutorRule = InstantTaskExecutorRule()
それが機能するためのテストクラスに。 Java同等のものは
@Rule
public InstantTaskExecutorRule instantTaskExecutorRule = new InstantTaskExecutorRule();
追加する必要もあります
androidTestImplementation "androidx.Arch.core:core-testing:2.0.0"
あなたのモデルにbuild.gradle
依存関係。