Firebase Test Lab は、Android アプリをテストするためのクラウドベースのインフラストラクチャです。Android Studio と完全に連携しており、インストルメンテーション テストの実行とテスト結果の確認を行えます。
このガイドでは、Test Lab と統合してテストを実行するために、Android Studio でインストルメンテーション テストを変更する方法について説明します。Android Studio の UI から Test Lab を使用して、テスト マトリックスの作成、インストルメンテーション テストの実行、テスト結果の確認を行う手順については、Firebase Test Lab でテストを実行するをご覧ください。
スクリーンショットをキャプチャする
Test Lab は、インストルメンテーション テストの実行時にスクリーンショットをキャプチャできます。スクリーンショットをキャプチャする方法については、プロジェクトにスクリーンショット ライブラリを追加するをご覧ください。
Espresso テスト レコーダーを使用してテストを作成する
Espresso テスト レコーダー ツールを使用すると、テストコードを記述しなくてもアプリの UI テストを作成できます。デバイスでの操作を記録し、アサーションを追加して、アプリの特定のスナップショットの UI 要素を検証できます。Espresso テスト レコーダーは、保存された記録を受け取り、対応する Espresso UI テストを自動的に生成します。生成されたテストは Test Lab でアプリをテストする際に使用できます。
詳しくは、Espresso テスト レコーダーで UI テストを作成するをご覧ください。
Test Lab のインストルメンテーション テストの動作を変更する
Test Lab では、インストルメンテーション テストに追加できるシステム変数が用意されています。この変数を使うことで、Test Lab でインストルメンテーション テストを実行��る際に、自�������バイス���エミュレータで実行する場合とは違う動作をさせることができます。
次のコード例では、システム プロパティ、firebase.test.lab を読み取り、テストが Test Lab で実行されている場合は文字列 testLabSetting の値を true に設定します。続いて、この文字列の値を使用して、追加のステートメントが実行されるかどうかを制御します。
Kotlin
val testLabSetting = Settings.System.getString(contentResolver, "firebase.test.lab") if ("true" == testLabSetting) { // Do something when running in Test Lab // ... }
Java
String testLabSetting = Settings.System.getString(getContentResolver(), "firebase.test.lab"); if ("true".equals(testLabSetting)) { // Do something when running in Test Lab // ... }
Firebase Test Lab プラグインを介して Gradle で管理されているデバイスを使用する
Firebase Test Lab プラグインを介して Gradle で管理されているデバイスを使用することで、プロジェクトの Gradle ファイルの構成に基づいて、Test Lab デバイスで自動インストルメンテーション テストを大規模に実行できます。
Gradle で管理されているデバイスでは、スマート シャーディングも利用できるため、過去のテスト履歴に基づいてシャード間でテストを最適に分散できます。スマート シャーディングでは、シャードはほぼ同じ時間実行され、できるだけ早くテスト結果が返されます。スマート シャーディングは、大規模なテストスイートを並行して実行できるため、この機能は CI/CD フローに適しています。
Gradle で管理されているデバイス用の Test Lab プラグインを使用してスマート シャーディングを有効にするには、スマート シャーディングでテスト実行を最適化するの手順を実施してください。