Spinach Forest

TIL: Don't mix blockingGet() and Main Looper

|

RxJava で main thread になんかさせるコードが関与する場合 Observable#blockingFirst() を使うとデッドロックしてしまう。そこで以下のようなかんじで subscription と retrieval を分離し、その間でタスクを flush する。

AtomicReference<String> result = new AtomicReference();
Disposable unused = yourSubject.subscribe(result::set);
shadowOf(getMainLooper()).idle();
assertThat(result.get()).isEqualTo("Expected");

追記

Coroutine はサポートがあるらしい。