Espresso

Espresso を使用すると、簡潔で、美しく、信頼性の高い Android UI テストを作成できます。

次のコード スニペットは、Espresso テストの例を示しています。

Kotlin

    @Test
    fun greeterSaysHello() {
        onView(withId(R.id.name_field)).perform(typeText("Steve"))
        onView(withId(R.id.greet_button)).perform(click())
        onView(withText("Hello Steve!")).check(matches(isDisplayed()))
    }
    

Java

    @Test
    public void greeterSaysHello() {
        onView(withId(R.id.name_field)).perform(typeText("Steve"));
        onView(withId(R.id.greet_button)).perform(click());
        onView(withText("Hello Steve!")).check(matches(isDisplayed()));
    }
    

コア API は小さく、挙動が想定しやすくなっています。また、カスタマイズできるように公開されており、習得も用意です。ボイラープレート、カスタム インフラストラクチャ、細かい実装内容に煩わされることなく、想定される結果、動作、アサーションのテストを確実に行えます。

Espresso により、テストに要する時間を短縮できます。アプリケーション UI の操作やアサーションのために、wait、sync、sleep、poll などをあらかじめ指定しておく必要がなくなります。

ターゲット ユーザー

Espresso のターゲット ユーザーは、開発ライフサイクルには自動化テストが不可欠と考える開発者です。ブラックボックス テストに使用することもできますが、テスト対象のコードベースに精通しているユーザーが使用してこそ本領が発揮されます。

同期機能

Espresso は、テストで onView() が呼び出されるたびに、以下の同期条件が満たされるまで、関連する UI アクションやアサーションの実行を停止して待機します。

  • メッセージ キューが空になる。
  • タスクを実行している AsyncTask のインスタンスがなくなる。
  • 開発者が定義したアイドリング リソースがすべてアイドル状態になる。

このようなチェックを実施することで、一定期間内に常に 1 つの UI アクションまたはアサーションのみが行われるようにしています。この機能により、信頼性の高いテスト結果が得られます。

パッケージ

  • espresso-core - コアおよび基本の View マッチャー、アクション、アサーションが含まれています。Espresso の基本レシピをご覧ください。
  • espresso-web - WebView サポート用のリソースが含まれています。
  • espresso-idling-resource - バックグラウンド ジョブと同期するための Espresso のメカニズムです。
  • espresso-contrib - 外部からのコントリビューションによるパッケージです。DatePickerRecyclerView アクションと Drawer アクション、ユーザー補助チェック、CountingIdlingResource が含まれています。
  • espresso-intents - 隔離環境テストでインテントの検証やスタブ化を行うための拡張機能です。
  • espresso-remote - Espresso のマルチプロセス機能が含まれています。

最新バージョンの詳細については、リリースノートをご覧ください。

参考情報

Espresso を使用した Android のテストに関するその他の情報については、次のリソースをご覧ください。

サンプル