适用于多个应用程序的 UI
Android 支持涉及多个应用程序的用户界面测试。假设我们的应用程序有一个选项,可以从我们的应用程序移动到消息应用程序以发送消息,然后返回到我们的应用程序。在这种情况下,UI automator 测试框架 可以帮助我们测试应用程序。UI automator 可以被视为 espresso 测试框架的良好伴侣。在选择 UI automator 之前,我们可以利用 espresso 测试框架中的 intending() 选项。
设置说明
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 是否反映了预期状态。