メモ: Espresso Test Recorderは、 Android Studio 2.2ではベータ版となっています。
Espresso Test Recorder ツールを使用すれば、テストコードを一切記述しなくてもアプリのUIテストを作成することができます。 テストシナリオを記録することで、デバイス上での操作を記録して、アサーションを追加してアプリの特定のスナップショットでのUI要素を検証することができます。 それからEspresso Test Recorder は保存された記録を取得し、それを基にしてアプリで実行可能なUIテストを自動的に生成します。
Espresso Test Recorder は、Espresso テストフレームワーク( Android テストサポートライブラリのAPI)に基づいてテストを記述します。 Espresso API は、ユーザー操作に基づいた簡潔で信頼性の高いUIテストを作成することをサポートします。 基礎となるアプリのアクティビティとビューに直接アクセスしなくても、expectations、インタラクション、アサーションを設定することで、 テストが断片化するのを防いでテストの実行速度を最適化します。
Android Studio 2.2の新機能であるEspresso Test Recorderの簡単な概要については、以下の動画を見てください。:
Espresso Test Recorderを使用する前に、予期せぬ結果を防ぐためにテスト端末上でのアニメーションを無効にしてください。 Testing UI for a Single App ページの "Set Up Espresso"の説明に従ってください。 しかし、Espressoライブラリへの依存参照を手動で設定する必要はないので注意してください。 これは 記録を保存した時に、 Test Recorderが設定を自動的に行うためです。 これらの手順は、指定されたプロジェクトで一度だけ実行する必要があります。
Espresso のテストは二つのメインコンポーネント(ビュー要素のUIインタラクションとアサーション)で構成されています。 UI インタラクションには、ユーザーがあなたのアプリを操作するのに使うタップアクションと入力アクションが含まれています。 アサーションは、画面上のビジュアル要素が存在するかどうかや、その要素の内容を検証します。 例えば、Notes testing appのEspresso テストでは、ボタンクリックと新規ノード記述のUIインタラクションを含み、アサーションを使ってボタンが存在するかの検証とノートの中身の検証を行います。
この項目では、 Espresso Test Recorderを使ってこれらのテストコンポーネントを両方作成する方法と、 完了した操作記録を保存してテストを生成する方法について説明します。
Espresso Test Recorderを使ってテストの記録を開始するには。以下のように作業します:
メモ: アプリ操作の記録を始める前に、端末上で“Waiting for Debugger” or “Attaching Debugger.”と書かれたダイアログが表示されるかもしれません。 Espresso Test Recorder はデバッガーを使ってUI操作イベントを記録します。 デバッガーが接続されれば、ダイアログは自動的に閉じます。; Force Closeのボタンは押さないでください。
以下の図1で示すように、記録された操作はRecord Your Testウィンドウのメインパネルに表示されます。 テストを実行すると、 Espresso testはこれらのアクションを同じ順番で実行します。
アサーションは、以下三つのメインタイプを使って、Viewが存在するかどうかや、その要素の内容を確認します。 :
アサーションをテストに追加するには、以下のように作業します:
図 2 のスクリーンショットでは、ノートのタイトルが“Happy Testing!”になっているのかを確認するために作成された“text is”アサーションを示しています。:
アサーションを作成している間も( Record Your Testウィンドウ内でアセーションパネルが開いている間でさえも)、アプリの操作を続けることが可能です。 Espresso Test Recorder will keep logging your actions, but the assertion you are editing will appear before these interactions once it’s saved. アサーションのスクリーンショットも、あなたが Add Assertion ボタンを押した時の端末やエミュレーターのレイアウトをそのまま保持します。
メモ: Espresso Test Recorder は実験的な機能のため、現時点では縦向きが面でのみアセーションの追加をサポートしています。 横向き画面でもアセーションを追加することはできますが、スクリーンキャプチャは縦向きモードで表示されます。 そのため、選択したUI要素を囲む赤枠は、画面上の実際の要素の位置と一致しません。
アプリの操作とアセーションの追加が完了したら、以下の手順を使ってその記録を保存してEspresso testを生成します:
build.gradle
ファイルへ自動的に追加されます。Espresso のテストを実行するには、IDEの左側にあるProject ウィンドウを使用します :
IDEの下部にあるRunウィンドウでテストの進捗状況を監視してください。 Android Studio はプロジェクトのフルビルドを実行し、図3で示すように、Runウィンドウ内にテスト名が付いたタブを開きます。 このタブで、テストが成功したか失敗したかを確認できます。またテストの実行にどれだけ時間がかかるかも確認できます。 テストが終了すると、タブには “Tests ran to completion.” というログが出力されます。
テストの実行設定を記述する方法に関してより深く学びたいのであれば、Create and Edit Run/Debug Configurationsの“Defining a test configuration for a class or method”項目を参照してください。 .
Espresso Test Recorderで生成されたテストと Firebase Test Lab を使って、 数百もの端末設定のクラウド上でアプリをテストすることができます。 Spark プランの1日無料割り当て分の範囲内であれば、 Test Labを使ったアプリのテストに料金はかかりません。 Firebase Test Labを使ってEspresso のテストを実行するには、アプリ用のFirebase プロジェクトを作成して、 Firebase Test Labを使ってテストを実行する手順に従ってAndroid Studio上から作業します。