複数のアプリケーションのUI

Androidは、複数のアプリケーションを含むユーザーインターフェイステストをサポートしています。アプリケーションに、アプリケーションからメッセージングアプリケーションに移動してメッセージを送信してから、アプリケーションに戻るオプションがあると考えてみましょう。このシナリオでは、UIオートマターテストフレームワークがアプリケーションのテストに役立ちます。UI automatorは、エスプレッソテストフレームワークの優れたコンパニオンと見なすことができます。UI automatorを選択する前に、エスプレッソテストフレームワークのintentioning()オプションを利用できます。

セットアップ手順

Androidは、UIオートマトンを個別のプラグインとして提供します。以下に指定するように、app /build.gradleで構成する必要があります。

dependencies {
   ...
   androidTestImplementation 'androidx.test.uiautomator:uiautomator:2.2.0'
}

テストケースを作成するためのワークフロー

UIAutomatorベースのテストケースの書き方を理解しましょう。

  • getInstance()メソッドを呼び出し、Instrumentationオブジェクトを渡すことにより、UiDeviceオブジェクトを取得します。

myDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
myDevice.pressHome();
  • findObject()メソッドを使用してUiObjectオブジェクトを取得します。このメソッドを使用する前に、uiautomatorviewerアプリケーションを開いて、ターゲットアプリケーションのUIコンポーネントを検査できます。これは、ターゲットアプリケーションを理解することで、より適切なテストケースを作成できるためです。

UiObject button = myDevice.findObject(new UiSelector()
   .text("Run")
   .className("android.widget.Button"));
  • UiObjectのメソッドを呼び出して、ユーザーの操作をシミュレートします。たとえば、setText()を使用してテキストフィールドを編集し、click()を使用してボタンのクリックイベントを発生させます。

if(button.exists() && button.isEnabled()) {
   button.click();
}
  • 最後に、UIが期待される状態を反映しているかどうかを確認します。