多应用程序的 UI


Android 支持涉及多个应用程序的用户界面测试。让我们考虑我们的应用程序可以选择从应用程序移动到消息应用程序以发送消息,然后返回到我们的应用程序。在这种情况下,UI自动化测试框架可以帮助我们测试应用程序。UI automator可以被认为是 espresso 测试框架的好伴侣。在选择UI automator之前,我们可以利用espresso 测试框架中的ending()选项。

设置说明

Android 提供 UI automator 作为单独的插件。它需要在app/build.gradle中配置,如下所示,

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

编写测试用例的工作流程

让我们了解如何编写基于UI Automator 的测试用例,

  • 通过调用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 是否反映了预期的状态。