Surface Duo でスワイプ ジェスチャをシミュレートする
UiAutomator は、アプリ間のテスト機能とデバイス センサーへのアクセスを提供するテスト フレームワークです。 UiDevice クラスの swipe
メソッドとデバイスのディメンションを使うと、テスト中に Surface Duo でさまざまなジェスチャをシミュレートすることができます。
テスト キットは、異なる座標間のスワイプを実行して、アプリのスパン、アプリのスパン解除、画面間のアプリの切り替え、アプリを閉じる、をシミュレートするユーティリティ関数を提供します。
セットアップ
androidTest ディレクトリに新しいテスト クラス ファイルを作成します。 これは、後でテスト規則とテスト用にコード スニペットに追加する場所です。
最上位の build.gradle ファイルに
mavenCentral()
リポジトリがあることを確認します。allprojects { repositories { google() mavenCentral() } }
次の依存関係をモジュールレベル build.gradle ファイルに追加します (現在のバージョンは、ここに示されているものとは異なる場合があります)。
androidTestImplementation "com.microsoft.device.dualscreen.testing:testing-kotlin:1.0.0-alpha4" androidTestImplementation "androidx.test.uiautomator:uiautomator:2.2.0" androidTestImplementation "androidx.test.espresso:espresso-core:3.4.0" androidTestImplementation "androidx.test:runner:1.4.0" androidTestImplementation "androidx.test:rules:1.4.0"
compileSdkVersion
が API 33 に設定され、targetSdkVersion
がモジュール レベルの build.gradle ファイルで API 32 以降に設定されていることを確認します。android { compileSdkVersion 33 defaultConfig { targetSdkVersion 32 } ... }
テスト クラス内に
TestRule
とUiDevice
のインスタンスを作成します。Espresso を使ってビューをテストする場合、デバイスでアニメーションを無効にしてください。
テストを記述する方法
テスト キット ライブラリでは、Surface Duo でディスプレイ操作を実行するためのオプションを提供しています。 これらのメソッドはすべて UiDevice
の swipe メソッドを使って、異なる座標間のスワイプをシミュレートしています。 テストの信頼性をできるだけ高めるために、スワイプの合間にアサーションとチェックを実行し、各テストで実行するスワイプの回数を最小限に抑えることをお勧めします。
スワイプ ジェスチャを使うテストを作成するには、次の手順に従います。
- スワイプ ジェスチャの実行
- UI が予期したとおりに変更されたことをアサートする
次のテスト例では、スパン時に 2 つのペインを表示するアプリのシンプルな UI テストを示します。
@Test
fun testSpan() {
onView(withText("pane 1")).check(matches(isDisplayed()))
// 1. Perform swipe gesture
device.spanFromStart()
// 2. Assert that UI has changed as expected
onView(withText("pane 1")).check(matches(isDisplayed()))
onView(withText("pane 2")).check(matches(isDisplayed()))
}
次のアニメーションは、testSpan
が Surface Duo エミュレーター上で実行されているときにどのように見えるかを示しています。
サンプル
Surface Duo テストでスワイプ ジェスチャのシミュレーションを使う方法のその他の例については、次のリソースを参照してください。
- Surface Duo SDK
- ComposeTesting ライブラリのサンプル
- FoldingVideo
- PhotoEditor
- SourceEditor
- TwoNote
- デュアルスクリーン エクスペリエンスの例
リソース
インストルメント化されたテストと UiAutomator の詳細については、次のリソースを参照してください。