サイトのトップへ戻る

Android Studio ドキュメント 日本語訳

サイト内検索

Espresso Test Recorderを使ってUIテストを作成する

メモ: 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 のテストを記録する

Espresso のテストは二つのメインコンポーネント(ビュー要素のUIインタラクションとアサーション)で構成されています。 UI インタラクションには、ユーザーがあなたのアプリを操作するのに使うタップアクションと入力アクションが含まれています。 アサーションは、画面上のビジュアル要素が存在するかどうかや、その要素の内容を検証します。 例えば、Notes testing appのEspresso テストでは、ボタンクリックと新規ノード記述のUIインタラクションを含み、アサーションを使ってボタンが存在するかの検証とノートの中身の検証を行います。

この項目では、 Espresso Test Recorderを使ってこれらのテストコンポーネントを両方作成する方法と、 完了した操作記録を保存してテストを生成する方法について説明します。



UI インタラクションを記録する

Espresso Test Recorderを使ってテストの記録を開始するには。以下のように作業します:

  1. Run > Record Espresso Testをクリックします。
  2. Select Deployment Target ウィンドウで、テストを記録したい端末を選びます。 必要であれば、新しくAndroid 仮想端末を作成してくださいOKをクリックします。
  3. Espresso Test Recorder がプロジェクトのビルドを引き起こし、アプリのインストールと起動が行われてからアプリの操作ができるようになります。 アプリを起動すると、Record Your Test ウィンドウが表示されます。 また端末で操作をしていないので、メインパネルには“No events recorded yet.”と表示されています。 “タップ”や“入力”といった操作イベントの記録を開始するため、端末を操作してください。

メモ: アプリ操作の記録を始める前に、端末上で“Waiting for Debugger” or “Attaching Debugger.”と書かれたダイアログが表示されるかもしれません。 Espresso Test Recorder はデバッガーを使ってUI操作イベントを記録します。 デバッガーが接続されれば、ダイアログは自動的に閉じます。; Force Closeのボタンは押さないでください。

以下の図1で示すように、記録された操作はRecord Your Testウィンドウのメインパネルに表示されます。 テストを実行すると、 Espresso testはこれらのアクションを同じ順番で実行します。

図 1. UI操作が記録された Record Your Test ウィンドウ。



アサーションを追加して UI 要素を確認する

アサーションは、以下三つのメインタイプを使って、Viewが存在するかどうかや、その要素の内容を確認します。 :

  • text is: 選択したView 要素のテキストコンテンツを確認します
  • exists: View 要素が、画面に表示されている現在のView階層内に存在しているか確認します。
  • does not exist: View 要素が現在のView階層内に存在していないかを確認します。

アサーションをテストに追加するには、以下のように作業します:

  1. Add Assertionをクリックします。 Espresso 現在のアプリ状態に関するUI階層とその他情報を取得している間、Screen Captureダイアログが表示されます。 このダイアログは、Espresso がスクリーンショットを取得すると自動的に閉じます。
  2. 現在の画面レイアウトが、Record Your Testウィンドウの右側のパネルに表示されます。 アサーションを作成するView要素を選ぶには、スクリーンショット内でその要素をクリックするが、画面下部のEdit assertionボックス内にある一つ目のドロップダウンメニューを使用します。選択したViewは赤四角で強調表示されます。
  3. Edit assertion ボックス内にある二つ目のドロップダウンメニューから使用したいアサーションを選びます。 Espresso は選択したView要素に有効なアサーションを埋め込みます。
    • “text is” アサーションを選んだ場合、 Espresso は選択したView 要素内にテキストを自動的に挿入します。Edit assertion ボックス内のテキストフィールドを使って、目的のアサーションに一致するようテキストを編集できます。
  4. 別のアサーションを作成するには Save and Add Another をクリックし、アサーションパネルを閉じるには Save Assertionをクリックします。

図 2 のスクリーンショットでは、ノートのタイトルが“Happy Testing!”になっているのかを確認するために作成された“text is”アサーションを示しています。:

図 2. View 要素 が選択された(赤い枠内)後のEdit assertionボックス。

アサーションを作成している間も( 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を生成します:

  1. Complete Recordingをクリックします。Pick a test class name for your test ウィンドウが表示されます。
  2. Espresso Test Recorder は、起動したアクティビティに基づいたパッケージ内で重複しないよう、テストに名前を付けます。 提案された名前を変更したい場合は Test class name テキストフィールドを使用します。Saveをクリックします。
    • Espresso の依存ファイルをアプリに追加していない場合、テストを保存しようとするとMissing Espresso dependencies ダイアログが表示されます。 Click Yesをクリックすると、依存ファイルが build.gradle ファイルへ自動的に追加されます。
  3. Espresso Test Recorder がテストを生成した後、そのテストが自動的に開きます。 そしてAndroid Studioは、IDEのProjectウィンドウ内で選択したテストクラスを表示します。
    • テストが保存される場所は、インストラメンテーションテスト のルート位置と起動したアクティビティのパッケージ名によって変わります。 例えば、Notes testing appのテストは、記録したテストがあるアプリモジュールのsrc > androidTest >java > com.example.username.appname フォルダーに保存されます。


Espresso のテストをローカルで実行する

Espresso のテストを実行するには、IDEの左側にあるProject ウィンドウを使用します :

  1. 目的のアプリモジュールフォルダーを開いて、実行したいテストまで移動します。テストの保存場所は、インストラメンテーションテスト のルート位置と起動したアクティビティのパッケージ名によって変わります。 以下の例では、Notes testing appのテストが保存される場所について例示しています。:
    • ウィンドウ内のAndroid ビュー を使用している場合、java >com.example.username.appname (androidTest)と進みます。
    • ウィンドウ内の Project ビューを使用している場合は、モジュールフォルダー内でsrc > androidTest > java > com.example.username.appnameを進みます。
  2. テストを右クリックして、 Run ‘testName.’をクリックします
    • それ以外の方法として、テストファイルを開いて生成されたテストクラスやメソッドを右クリックすることもできます。テストを実行する方法の詳細については Test Your App ページを参照してください。
  3. Select Deployment Target ウィンドウで、テストを実行したい端末を選びます。必要であれば、 新たにAndroid 仮想端末を作成しますOKをクリックします。

IDEの下部にあるRunウィンドウでテストの進捗状況を監視してください。 Android Studio はプロジェクトのフルビルドを実行し、図3で示すように、Runウィンドウ内にテスト名が付いたタブを開きます。 このタブで、テストが成功したか失敗したかを確認できます。またテストの実行にどれだけ時間がかかるかも確認できます。 テストが終了すると、タブには “Tests ran to completion.” というログが出力されます。

図 3. ローカルのEspresso テストを実行した後のRun ウインドウ上の出力例。

テストの実行設定を記述する方法に関してより深く学びたいのであれば、Create and Edit Run/Debug Configurationsの“Defining a test configuration for a class or method”項目を参照してください。 .



Android用Firebase Test Lab を使ってEspresso のテストを実行する

Espresso Test Recorderで生成されたテストと Firebase Test Lab を使って、 数百もの端末設定のクラウド上でアプリをテストすることができます。 Spark プランの1日無料割り当て分の範囲内であれば、 Test Labを使ったアプリのテストに料金はかかりません。 Firebase Test Labを使ってEspresso のテストを実行するには、アプリ用のFirebase プロジェクトを作成してFirebase Test Labを使ってテストを実行する手順に従ってAndroid Studio上から作業します。

図 4. Firebase Test Labを使って複数の端末上でテストを実行した後の、 Runウィンドウの出力例。