UI 测试

Android 中的 Espresso 仪器化 UI 测试

UI 测试(包括用于 Android 开发的 Espresso)在确保 Firefox 和 Android 版 Focus 的质量、可靠性和性能方面发挥着至关重要的作用。它们通过模拟真实场景来促进用户交互,从而在设备上捕获手动测试或开发过程中可能不会显现的实际问题。通过将 UI 测试集成到开发过程中,开发人员可以确保其应用程序满足用户期望并在不同的设备和 Android 版本上提供高质量的用户体验。通过编写和执行这些测试,开发人员可以在开发周期的早期捕获并修复问题,从而显著提高 Firefox 的质量和可靠性。这种方法不仅增强了用户体验,而且还通过在 Firefox 触达最终用户之前识别和解决问题来节省时间和资源。

此页面记录了如何在 Android Studio 中本地编写和运行 UI 测试。

编写 UI 测试

一个简单的 Espresso UI 测试如下所示

@Test
fun displaySaysHello() {
    onView(withId(R.id.name_field)).perform(typeText("Firefox"))
    onView(withId(R.id.display_button)).perform(click())
    onView(withText("Hello Firefox!")).check(matches(isDisplayed()))
}

测试结构

  1. 创建测试类:首先创建一个新的测试类,该类应扩展基本测试设置类(TestSetup

  2. 使用测试规则:利用测试规则来管理测试活动的生命周期。例如 HomeActivityIntentTestRule

  3. 定义测试方法:编写测试方法以涵盖您要测试的功能。每个方法都应代表一个特定的测试用例。

  4. 利用机器人模式:使用机器人模式封装 UI 交互和断言。此模式涉及为每个要测试的屏幕或功能创建一个单独的类。每个机器人类都封装了与该特定屏幕或功能相关的操作和断言。

编写测试用例

  1. 设置测试:在运行测试之前,请设置必要的条件。这可能包括导航到特定屏幕或准备 Firefox 状态。

  2. 执行操作:使用机器人类在 UI 上执行操作。这可能包括输入文本、单击按钮或在 Firefox 中导航。

  3. 验证结果:执行操作后,验证预期结果。这可能包括检查 UI 元素是否显示或文本是否匹配。

  4. 清理:测试结束后,清理对应用程序状态所做的任何更改。这可能包括清除历史记录或重置为初始应用程序状态。

运行 UI 测试

要运行 UI 测试,您可以使用 Android Studio 中内置的测试运行器,也可以使用 Gradle 命令从命令行运行它们。

Gradle

要在 androidTest 下使用 Gradle 运行 UI 测试,您可以使用 connectedFenixDebugAndroidTest 任务,该任务专门用于在 FenixDebug 构建变体上运行仪器化测试。此任务是 Android Gradle 插件命令套件的一部分,允许直接从命令行执行测试。例如,要运行特定的测试类,例如 org.mozilla.fenix.ui.ComposeSearchTest,您将在终端中导航到 Fenix 的根目录并执行以下命令

./gradlew connectedFenixDebugAndroidTest -Pandroid.testInstrumentationRunnerArguments.class=org.mozilla.fenix.ui.ComposeSearchTest

此命令针对 FenixDebug 构建变体,并且仅运行 ComposeSearchTest 类中的测试。

类似地,要运行 ComposeSearchTest 类中的单个测试,您可以使用 # 符号将测试方法名称追加到类。此语法允许您指定要执行的特定测试方法。

例如,如果您在 ComposeSearchTest 类中有一个名为 testSearchFunctionality 的测试方法,则您将修改上述示例使其看起来像 org.mozilla.fenix.ui.ComposeSearchTest#testSearchFunctionality

最后,要运行包中的所有测试,只需将 .class 属性替换为 .package 并指定包名。这种方法允许您将目标设置为特定包以进行测试执行,确保仅运行该包中的测试。

这些测试的结果可以在 app/build/reports 目录中找到,您将在其中找到 HTML 和 XML 报告,详细说明测试执行的结果。

Android Studio

要在 Android Studio 中直接运行 UI 测试,您可以遵循一个简单的过程,该过程利用 IDE 的内置测试运行器。此方法允许您直接从“项目”窗口执行测试,提供了一种方便的方法来运行单个测试或测试组,而无需离开开发环境。

  1. 打开“项目”窗口:在 Android Studio 的左侧,您会找到“项目”窗口。此窗口显示 Fenix 的结构,包括 src/androidTest/java/org.mozilla.fenix/ui 目录(UI 测试所在的目录)。

  2. 导航到目标测试类:在“项目”窗口中,导航到 src/androidTest/java/org.mozilla.fenix.ui 目录。在这里,您将找到所有测试类。

  3. 运行单个测试:要运行单个测试,请右键单击要运行的测试类文件。从出现的上下文菜单中,选择“运行‘ClassNameTest’”。将 ClassNameTest 替换为您测试类的实际名称。Android Studio 将编译您的应用程序并在选定的设备或模拟器上运行测试类。

  4. 运行类中的所有测试:要运行特定测试类中的所有测试,请右键单击类文件并选择“运行‘ClassNameTest’”。这将执行该类中的所有测试方法。

  5. 运行包中的所有测试:要运行包中的所有测试,请右键单击“项目”窗口中的包名称并选择“运行测试”。这将执行所选包中的所有测试类。

  6. 查看测试结果:运行测试后,您可以在 Android Studio 底部的“运行”窗口中查看结果。此窗口显示每个测试的结果,包括通过的、失败的和跳过的测试。您可以单击单个测试以查看有关其执行的更多详细信息。

测试资源