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()))
}
测试结构¶
创建测试类:首先创建一个新的测试类,该类应扩展基本测试设置类(
TestSetup
)使用测试规则:利用测试规则来管理测试活动的生命周期。例如
HomeActivityIntentTestRule
定义测试方法:编写测试方法以涵盖您要测试的功能。每个方法都应代表一个特定的测试用例。
利用机器人模式:使用机器人模式封装 UI 交互和断言。此模式涉及为每个要测试的屏幕或功能创建一个单独的类。每个机器人类都封装了与该特定屏幕或功能相关的操作和断言。
编写测试用例¶
设置测试:在运行测试之前,请设置必要的条件。这可能包括导航到特定屏幕或准备 Firefox 状态。
执行操作:使用机器人类在 UI 上执行操作。这可能包括输入文本、单击按钮或在 Firefox 中导航。
验证结果:执行操作后,验证预期结果。这可能包括检查 UI 元素是否显示或文本是否匹配。
清理:测试结束后,清理对应用程序状态所做的任何更改。这可能包括清除历史记录或重置为初始应用程序状态。
运行 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 的内置测试运行器。此方法允许您直接从“项目”窗口执行测试,提供了一种方便的方法来运行单个测试或测试组,而无需离开开发环境。
打开“项目”窗口:在 Android Studio 的左侧,您会找到“项目”窗口。此窗口显示 Fenix 的结构,包括
src/androidTest/java/org.mozilla.fenix/ui
目录(UI 测试所在的目录)。导航到目标测试类:在“项目”窗口中,导航到
src/androidTest/java/org.mozilla.fenix.ui
目录。在这里,您将找到所有测试类。运行单个测试:要运行单个测试,请右键单击要运行的测试类文件。从出现的上下文菜单中,选择“运行‘ClassNameTest’”。将
ClassNameTest
替换为您测试类的实际名称。Android Studio 将编译您的应用程序并在选定的设备或模拟器上运行测试类。运行类中的所有测试:要运行特定测试类中的所有测试,请右键单击类文件并选择“运行‘ClassNameTest’”。这将执行该类中的所有测试方法。
运行包中的所有测试:要运行包中的所有测试,请右键单击“项目”窗口中的包名称并选择“运行测试”。这将执行所选包中的所有测试类。
查看测试结果:运行测试后,您可以在 Android Studio 底部的“运行”窗口中查看结果。此窗口显示每个测试的结果,包括通过的、失败的和跳过的测试。您可以单击单个测试以查看有关其执行的更多详细信息。