複数のアプリケーションの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が期待される状態を反映しているかどうかを確認します。