Espresso Device API を使用して、デバイスに一般的な負荷がかかっている場合にアプリをテストする 構成変更(回転や画面の展開など)が含まれます。Espresso Device API を使用すると、これらの構成変更を仮想デバイスでシミュレートできます。 テストが同期的に実行されるため、1 つの UI アクションまたはアサーションのみが テスト結果の信頼性が高まりますUI の記述が初めての場合 Espresso を使用したテストについては、Espresso のドキュメントをご覧ください。
Espresso Device API を使用するには、次のものが必要です。
- Android Studio Iguana 以降
- Android Gradle プラグイン 8.3 以降
- Android Emulator 33.1.10 以降
- API レベル 24 以降を搭載している Android 仮想デバイス
Espresso Device API 用にプロジェクトをセットアップする
Espresso Device API をサポートするようにプロジェクトをセットアップする手順は次のとおりです。
テストデバイスにコマンドを渡すには、
androidTest
ソースセットのマニフェスト ファイルに対するINTERNET
権限とACCESS_NETWORK_STATE
権限:<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permissions.ACCESS_NETWORK_STATE" />
enableEmulatorControl
テストフラグをgradle.properties
ファイル:android.experimental.androidTest.enableEmulatorControl=true
モジュール レベルのビルドで
emulatorControl
オプションを有効にする スクリプト:Kotlin
testOptions { emulatorControl { enable = true } }
Groovy
testOptions { emulatorControl { enable = true } }
モジュール レベルのビルド スクリプトで、Espresso デバイス ライブラリをインポートする をプロジェクトに追加します。
Kotlin
dependencies { androidTestImplementation("androidx.test.espresso:espresso-device:1.0.0-beta01") }
Groovy
dependencies { androidTestImplementation 'androidx.test.espresso:espresso-device:1.0.0-beta01' }
一般的な構成変更に対するテスト
Espresso Device API には、画面の向きと折りたたみ式の状態に関する複数のステータスがあります。 デバイス設定の変更をシミュレートするために使用できます。
画面の回転に対するテスト
これは、デバイス画面が表示されたときにアプリがどのように動作するかをテストする方法の例です rotates:
まず、起動時の状態を一定にするには、デバイスを縦向きにします mode:
import androidx.test.espresso.device.action.ScreenOrientation import androidx.test.espresso.device.rules.ScreenOrientationRule ... @get:Rule val screenOrientationRule: ScreenOrientationRule = ScreenOrientationRule(ScreenOrientation.PORTRAIT)
テスト中にデバイスを横向きに設定するテストを作成する 実行:
@Test fun myRotationTest() { ... // Sets the device to landscape orientation during test execution. onDevice().setScreenOrientation(ScreenOrientation.LANDSCAPE) ... }
画面が回転したら、UI が想定どおりに新しいレイアウトに適応することを確認します。
@Test fun myRotationTest() { ... // Sets the device to landscape orientation during test execution. onDevice().setScreenOrientation(ScreenOrientation.LANDSCAPE) composeTestRule.onNodeWithTag("NavRail").assertIsDisplayed() composeTestRule.onNodeWithTag("BottomBar").assertDoesNotExist() }
画面の展開に対するテスト
アプリが折りたたみ式デバイスでどのように動作するかをテストする方法の例 画面が開きます。
まず、折りたたみ状態のデバイスをテストするために、
onDevice().setClosedMode()
。アプリのレイアウトが コンパクトな画面幅に適応します@Test fun myUnfoldedTest() { onDevice().setClosedMode() composeTestRule.onNodeWithTag("BottomBar").assetIsDisplayed() composeTestRule.onNodeWithTag("NavRail").assetDoesNotExist() ... }
完全に展開された状態に移行するには、
onDevice().setFlatMode()
。アプリのレイアウトが 展開されたサイズクラスです@Test fun myUnfoldedTest() { onDevice().setClosedMode() ... onDevice().setFlatMode() composeTestRule.onNodeWithTag("NavRail").assertIsDisplayed() composeTestRule.onNodeWithTag("BottomBar").assetDoesNotExist() }
テストに必要なデバイスを指定する
折りたたみ動作を実行するテストを
折りたたみ式デバイスの場合、テストは不合格になる可能性が高くなります。関連するテストのみを実行する
@RequiresDeviceMode
アノテーションを使用します。テストランナー
サポートしていないデバイスでのテストの実行を自動的にスキップします。
構成をテストします。各テストにデバイス要件ルールを追加できます。
テストクラス全体を指定できます
たとえば、Android または iOS モバイル デバイスをサポートしているデバイスでのみテストを実行するよう指定するには、
フラット構成に展開するには、次の @RequiresDeviceMode
コードを追加します。
追加します。
@Test
@RequiresDeviceMode(mode = FLAT)
fun myUnfoldedTest() {
...
}