Samples of Espresso synchronizing with RxJava
Rx Ja Night Vol.2のトーク「RxJavaの非同期処理に負けないEspressoテストコードを書く」のサンプルコードです。
画面上にDebounce
ボタンとSleep in Map Op.
ボタンが表示されています。RxJava1で実装しています。
Debounce
ボタンを最後に押してから3秒経過すると、ボタンの右側にDebounce Completed
というテキストが表示されます。 クリックイベントのストリームに対して、debounce(3, TimeUnit.SECONDS)
を適用することで実現しています。Sleep in Map Op.
ボタンを押してから3秒経過すると、ボタンの右側にSleep Completed
というテキストが表示されます。 クリックイベントのストリームに対して、map()
オペレーター内で3秒スリープすることで実現しています。
RxJava2で実装していることを除いては、RxJava1Activity
と同じです。
RxJava1Activityに対するテストを、Espressoを使って書いています。 具体的なテスト内容は以下の通りです。
Debounce
ボタンを押してしばらくしたらDebounce Completed
というテキストが表示されることSleep in Map Op.
ボタンを押してしばらくしたらSleep Completed
というテキストが表示されること
RxJavaの非同期処理の完了を待ち合わせる方法として、Rx Ja Night Vol.2で紹介した内容を採用しています。
以下の点を除いて、ActivityCountingIdlingResourceTestと同じです。
- RxJavaのスケジューラを
AsyncTask.THREAD_POOL_EXECUTOR
に置き換えることで、RxJavaの非同期処理の完了を待ち合わせています。
RxJava2Activityに対するテストをしている点を除いて、
jp.jun_nama.rxjavaespressosample.rxjava1
パッケージ配下のテストと同じです。
Copyright 2017 TOYAMA Sumio <jun.nama@gmail.com>
Licensed under the
Apache License, Version 2.0.