使用 Espresso 测试记录器创建界面测试

    Espresso 测试记录器根据 编写测试,这种测试框架是 Android 测试支持库中的一种 API。Espresso API 建议您根据用户操作创建简洁、可靠的界面测试。此结构可以声明预期、交互和断言,而不用直接访问底层应用的 Activity 和视图,这样可以防止测试不稳定并能优化测试运行速度。

    在使用 Espresso 测试记录器之前,请确保在您的测试设备上关闭动画以防止意外结果。按照页面上的“设置 Espresso”说明操作,不过请注意,您不需要手动设置对 Espresso 库的依赖项引用,因为测试记录器会在您保存记录时自动执行此操作。对于给定项目来说,这些步骤仅需要完成一次。

    Espresso 测试由两个主要部分组成:界面交互和 View 元素断言。界面交互包括用户可以用来与您的应用交互的点按和键入操作。断言旨在验证视觉元素的内容是否存在于屏幕上。例如,的 Espresso 测试可能包含点击按钮和添加新便签的界面交互,以及使用断言来验证按钮是否存在和便签的内容。

    本部分将介绍如何使用 Espresso 测试记录器创建这两个测试组成部分,以及如何保存您已完成的记录来生成测试。

    要开始使用 Espresso 测试记录器记录测试,请执行以下操作:

    断言可以通过三种主要类型验证某个 元素是否存在或者它的内容:

    • text is:检查已选定 View 元素的文本内容
    • exists:检查 View 元素是否存在于屏幕上可见的当前 View 层次结构中
    • does not exist:检查 View 元素是否不存在于当前 View 层次结构中
      要向您的测试添加断言,请执行以下操作:

    • 点击 Add Assertion。在 Espresso 获取界面层次结构和当前应用状态的其他相关信息时,将显示一个 Screen Capture 对话框。该对话框将在 Espresso 捕获屏幕截图后自动关闭。

    • 当前屏幕的布局将显示在 Record Your Test 窗口右侧的面板中。要选择将要在它上面创建断言的 View 元素,请点击屏幕截图中的元素,或者使用窗口底部 Edit assertion 框中的第一个下拉菜单。选定的 View 对象将突出显示在红框中。
    • Edit assertion 框的第二个下拉菜单中选择您想要使用的断言。Espresso 将使用选定 View 元素的有效断言填充菜单。
      • 如果您选择“text is”断言,Espresso 将自动插入选定 View 元素中当前存在的文本。您可以使用 Edit assertion 框中的文本字段编辑文本,使之匹配您的所需断言。
    • 点击 Save and Add Another 创建另一个断言,或者点击 Save Assertion 关闭断言面板。
      图 2 中的屏幕截图所示为正在创建一个“text is”断言来验证便签的标题是否为“Happy Testing!”:

      图 2. 选择 View 元素(位于红框中)后的 Edit assertion 框。

    完成与应用的交互并添加断言后,请按照下面的步骤操作,保存您的记录并生成 Espresso 测试:

    • 点击 Complete Recording。将显示 Pick a test class name for your test 窗口。
    • 文件将在 Espresso 测试记录器生成它后自动打开,Android Studio 将显示在 IDE 的 Project 窗口中选择的测试类。
      • 测试的保存位置取决于您的仪器测试根目录的位置以及已启动 Activity 的软件包名称。例如,的测试保存在您记录测试的应用模块的 src > androidTest > java > com.example.username.appname 文件夹中。

    要运行 Espresso 测试,请使用 Android Studio IDE 左侧的 ProjectCreate UI tests with Espresso Test Recorder - 图1 窗口:

    • 打开所需的应用模块文件夹并导航至您想要运行的测试。测试的位置取决于您的仪器测试根目录的位置以及已启动 Activity 的软件包名称。以下示例显示了的测试保存位置:
      • 如果您正在窗口内使用 Android 视图,请导航至 java > com.example.username.appname (androidTest)
      • 如果您正在窗口内使用 Project 视图,请导航至模块文件夹内的 src > androidTest > java > com.example.username.appname
    • 右键点击测试并点击 Run ‘testName’
      • 或者,您也可以打开测试文件,然后右键点击生成的测试类或函数。有关如何运行测试的详细信息,请阅读页面。
    • Select Deployment Target 窗口中,选择您想要在上面运行测试的设备。如果需要,创建一个新的 Android Virtual Device。点击 OK
      在 IDE 底部的 Run 窗口中监控测试的进度。Android Studio 将为您的项目运行完整构建并在 Run 窗口中打开一个包含您的测试名称的标签,如图 3 所示。您可以在这个标签中查看您的测试是通过还是失败,以及测试的运行时长。在测试完成时,标签将记录“Tests ran to completion.”。

      图 3. 在本地运行 Espresso 测试后 Run 窗口中的示例输出。

      要详细了解如何编写测试运行配置,请阅读中的“为类或函数定义测试配置”部分。

    您可以将 Espresso 测试记录器生成的测试与 Firebase 测试实验室结合使用,在云中针对成百上千种设备配置对您的应用进行测试。利用测试实验室在 内测试您的应用时不收取任何费用。要利用 Firebase 测试实验室运行 Espresso 测试,请为您的应用创建 Firebase 项目,然后按照说明从 Android Studio 中。
    Create UI tests with Espresso Test Recorder - 图2
    图 4. 利用 Firebase 测试实验室在多个设备上运行测试后 Run 窗口中的示例输出。