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 では、ボイラープレート コンテンツ、カスタム インフラストラクチャ、煩雑な実装の詳細に煩わされることなく、期待値、インタラクション、アサーションを明確にテストします。

Espresso により、テストに要する時間を短縮できます。これにより、待機、同期、スリープ、ポーリングを行わずに、静止時にアプリケーション UI を操作およびアサートできます。

対象者

Espresso は、自動テストが開発ライフサイクルに不可欠な要素であると考えるデベロッパーを対象としています。ブラックボックス テストに使用することもできますが、テスト対象のコードベースに精通していれば、Espresso のすべての機能を使用できます。

同期機能

Espresso は、テストで onView() を呼び出すたびに、次の同期条件が満たされるまで、対応する UI アクションまたはアサーションの実行を待機します。

  • メッセージ キューには、Espresso が直ちに処理する必要があるメッセージはありません。
  • 現在タスクを実行している AsyncTask のインスタンスがない。
  • デベロッパー定義のアイドリング リソースがすべてアイドル状態になっている。

Espresso では、これらのチェックを実行することで、任意の時点で 1 つの UI アクションまたはアサーションしか実行できない可能性が大幅に高まります。この機能により、信頼性の高いテスト結果が得られます。

パッケージ

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

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

参考情報

Android のテストで Espresso を使用する方法について詳しくは、以下のリソースをご覧ください。

サンプル