Rx Ja Night Vol.2 で発表予定の「RxJavaの非同期処理に負けないEspressoテストコードを書く」の発表資料です。 サンプルコードは https://github.com/sumio/RxJavaEspressoSample で公開しています。
![RxJavaの非同期処理に負けないEspressoテストコードを書く / Let's Write Espresso Tests Synchronizing with RxJava's Asynchronous Processing](https://cdn-ak-scissors.b.st-hatena.com/image/square/72a6d3afe01728c94571fb6622eccdfbd590e06f/height=288;version=1;width=512/https%3A%2F%2Ffiles.speakerdeck.com%2Fpresentations%2F575b59b581f4452f8861aead79660e6c%2Fslide_0.jpg%3F8128525)
Android実機上でのテストにはEspressoというテスティングフレームワークを使いますが、Spoonというライブラリと組み合わせることでUIテスト実行時のキャプチャを残すことができます。導入してみたのでメモになります。 導入 Espressoは導入済の状態からSpoonを入れます。この記事を書いている時点でのバージョンは以下の通りです。 Espresso : 2.2.2 Spoon : 1.6.4 プロジェクトのbuild.gradleにプラグインを追加。 buildscript { dependencies { ... classpath 'com.stanfy.spoon:spoon-gradle-plugin:1.2.2' } } アプリケーションのbuild.gradleにライブラリを追加。プラグインも有効にしておく。 apply plugin: 'spoon' spoon
Espressoとは AndroidのUI関係をUnitTestするとき、多くの場合は Espresso を使うことになると思います。 ですが、EspressoのKeyPress系処理が何かしらの条件下(Pagerとか複雑なView構造?)でフリーズする不具合に見舞われたので、どうにか回避して想定通りのテストが行えるようにしました。 Espresso.onView().perform()がフリーズする どういう条件下は不明で、perform()メソッド内部のwait(実行完了チェック?)が無限ループに陥るようです。Espressoはそれなりに複雑な処理なので、追っかけている途中で原因究明を諦めました。 ざっくりとした条件は Fragment + Tab + ChildFragmentを使った複雑なView なのかなとは思いますが、細かいことは不明です。端末再起動で一回だけ成功したりとかもし
@Test public void testMenuItem() { // 表示されていることを確認する場合 onView(withText(R.string.menu_setting)).check(matches(isDisplayed())); // 表示されていないことを確認する場合 onView(withText(R.string.menu_refresh)).check(doesNotExist()); } OverFlowMenu内のメニューアイテムを確認する OverFlowMenu内のアイテムを確認するには、OverFlowMenuを開く必要がある @Test public void testOverFlowMenuItem() { // オーバーフローメニューを開く openActionBarOverflowOrOptionsMenu(mActivityRule.get
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く