Skip to content

sumio/espresso-sample-for-droidkaigi2017

Repository files navigation

Espresso Sample for DroidKaigi 2017

DroidKaigi 2017のトーク「変更に強いEspressoテストコードを効率良く書こう」 で利用予定のサンプルアプリです。

アプリの概要

  • Qiitaの最新の投稿を20件取得してリスト表示します。
  • リスト表示された記事のうち、好きなものをを「お気に入り」に登録することができます。
  • 「お気に入り」に登録した記事は「Local Favorites」メニューから確認することができます。
  • このアプリで登録した「お気に入り」は永続化されません。アプリを終了すると消去されます。

ビルド方法

  • Qiitaの「アプリケーション設定」のページで、「個人用アクセストークン」を発行します。
  • 発行したアクセストークンを、local.propertiesapiKeyプロパティに設定してください。
  • Android Studio 2.3でインポートし、ビルドしてください。

テストコードについて

当日の発表で実演したときのテストコードをapp/src/androidTest 配下に配置しています。 実演内容を見直してみたいときに活用してください。
※ デモシナリオに沿って、事前に作成したものなので、実演内容とは一部異なる箇所があります。

  • Step1.java: 操作・検証内容を、Espresso Test Recorderを使って記録した直後のものです。 当日スライドpp. 60-64に対応します。
  • Step2.java: Step1で記録した内容で、そのままでは動作しない箇所を手直ししたものです。 当日スライドpp. 67-70に対応します。
  • Step3.java: Step2で手直しした内容を元に、メソッド抽出したものです。 当日スライドp. 71に対応します。
  • Step4.java: Step3で抽出したメソッドを使って、テストケースを実装したものです。 当日スライドp. 72に対応します。

その他、jp.jun_nama.espresso.commonsパッケージに、補助的なクラスを用意していますので、あわせて活用してください。

  • RecyclerViewUtils.java: 当日スライドpp. 67-69で紹介したユーティリティメソッドを定義しています。
  • RxEspressoTestRunner.java: 当日スライドp. 73の③で紹介した、RxJava1のSchedulers.io()AsyncTaskのスレッドプールに差し替えることで、Espressoの非同期待ち合わせを実現するサンプルです。この方法を利用する場合は、以下の点に注意してください。
    • RxJava2では、RxJavaHooksクラスが存在しないため、このままでは動作しません。 代わりにRxJavaPluginsクラスを使えば、同様な方法で実現できると思います。
    • カスタムテストランナーとして実装されているため、build.gradletestInstrumentationRunnerを修正する必要があります。
    • RxJavaで、Schedulers.computation()などの、メインスレッドでもSchedulers.io()でもないスケジューラを使っている場合は、そのままでは動作しないと思われます。
      利用している全てのスケジューラのスレッドプールを、同様な方法でAsyncTaskのスレッドプールに差し替えることで対応できる可能性があります。
    • このクラスは、Joshua Kovach氏によるブログ記事「Retrofitting Espresso」で紹介されている、Kotlinで書かれたサンプルコードを参考に、Javaで実装し直したものです。
  • MoreViewMatchers.java: 当日スライドp. 46で紹介した、Espresso Test Recorderのバグ(Issue 231461)を回避したchildAtPosition()メソッドの実装です。

License

Copyright 2017 TOYAMA Sumio <[email protected]>
Licensed under the Apache License, Version 2.0.

About

A sample app of Qiita browser for my talk in DroidKaigi 2017

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages