Espresso Test Recorder 工具让您无需编写任何测试代码即可为您的应用创建 UI 测试。通过录制测试场景,您可以录制您与设备的交互,并添加断言以验证应用特定快照中的 UI 元素。然后,Espresso Test Recorder 会使用保存的录制内容,并自动生成相应的 UI 测试,您可以运行该测试来测试您的应用。
Espresso Test Recorder 根据 Espresso 测试框架编写测试,该框架是 AndroidX Test 中的一个 API。Espresso API 鼓励您创建基于用户操作的简洁可靠的 UI 测试。通过在不直接访问底层应用活动和视图的情况下声明预期、交互和断言,这种结构可以防止测试不稳定并优化测试运行速度。
关闭测试设备上的动画
在使用 Espresso Test Recorder 之前,请确保关闭测试设备上的动画,以防止出现意外结果。请遵循 Espresso 设置说明,但请注意,您无需手动设置对 Espresso 库的依赖引用,因为当您保存录制内容时,Test Recorder 会自动执行此操作。这些步骤对于给定项目只需执行一次。
录制 Espresso 测试
Espresso 测试包含两个主要组件:UI 交互和 View 元素上的断言。UI 交互包括用户可能用于与应用交互的点击和输入操作。断言验证屏幕上可见视觉元素的存在或内容。例如,针对 Notes 测试应用的 Espresso 测试可能包括点击按钮和编写新笔记的 UI 交互,但会使用断言来验证按钮的存在和笔记的内容。
本节将介绍如何使用 Espresso Test Recorder 创建这两个测试组件,以及如何保存完成的录制内容以生成测试。
录制 UI 交互
要使用 Espresso Test Recorder 开始录制测试,请按以下步骤操作
- 点击 Run > Record Espresso Test。
- 在 Select Deployment Target 窗口中,选择您要录制测试的设备。如有必要,创建新的 Android 虚拟设备。点击 OK。
- Espresso Test Recorder 会触发您的项目构建,应用必须安装并启动,然后 Espresso Test Recorder 才能让您与其交互。应用启动后会显示 Record Your Test 窗口,由于您尚未与设备交互,主面板会显示“尚未录制任何事件”。与您的设备交互以开始记录“点击”和“输入”等操作事件。
注意:在开始记录交互之前,您可能会在设备上看到一个对话框,显示“等待调试器”或“正在附加调试器”。Espresso Test Recorder 使用调试器来记录 UI 事件。当调试器附加后,对话框将自动关闭;请勿点击强制关闭。
录制的交互将显示在 Record Your Test 窗口的主面板中,如下图 1 所示。当您运行测试时,Espresso 测试将尝试按相同的顺序执行这些操作。

图 1. 记录了 UI 交互的 Record Your Test 窗口。
添加断言以验证 UI 元素
断言通过三种主要类型验证 View 元素的存在或内容
- text is(文本为):检查所选 View 元素的文本内容
- exists(存在):检查 View 元素是否存在于屏幕上当前可见的 View 层次结构中
- does not exist(不存在):检查 View 元素是否存在于当前 View 层次结构中
要为您的测试添加断言,请按以下步骤操作
- 点击 Add Assertion。Espresso 获取 UI 层次结构和当前应用状态的其他信息时,会出现一个屏幕截图对话框。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 框。
在创建断言时,您可以继续与应用交互,即使断言面板仍在 Record Your Test 窗口中打开。Espresso Test Recorder 将继续记录您的操作,但您正在编辑的断言一旦保存,将出现在这些交互之前。断言的屏幕截图还会保留您点击 Add Assertion 按钮时设备或模拟器的布局。
保存录制内容
完成与应用的交互并添加断言后,请按照以下步骤保存录制内容并生成 Espresso 测试
- 点击 Complete Recording。Pick a test class name for your test 窗口随即显示。
- Espresso Test Recorder 会根据启动的活动的名称,在测试包中为您的测试指定一个唯一的名称。如果您想更改建议的名称,请使用 Test class name 文本字段。点击 Save。
- 如果您尚未将 Espresso 依赖项添加到应用中,尝试保存测试时会显示 Missing Espresso dependencies 对话框。点击 Yes 可自动将依赖项添加到您的
build.gradle
文件中。
- 如果您尚未将 Espresso 依赖项添加到应用中,尝试保存测试时会显示 Missing Espresso dependencies 对话框。点击 Yes 可自动将依赖项添加到您的
- 文件在 Espresso Test Recorder 生成后会自动打开,Android Studio 会在 IDE 的 Project 窗口中显示选中的测试类。
- 测试保存的位置取决于您的 instrumentation test 根目录以及启动的活动的包名称。例如,Notes 测试应用的测试会保存到您录制测试的应用模块的 src > androidTest > java > com.example.username.appname 文件夹中。
在本地运行 Espresso 测试
要运行 Espresso 测试,请使用 Android Studio IDE 左侧的 Project 窗口
- 打开所需的应用模块文件夹,导航到您要运行的测试。测试的位置取决于您的 instrumentation test 根目录和启动活动的包名称。以下示例演示了 Notes 测试应用的测试将保存到何处
- 如果您在窗口中使用 Android 视图,请导航到 java > com.example.username.appname (androidTest)。
- 如果您在窗口中使用 Project 视图,请导航到模块文件夹内的 src > androidTest > java > com.example.username.appname。
- 右键点击测试,然后点击 Run ‘testName.’
- 或者,您可以打开测试文件并右键点击生成的测试类或方法。有关如何运行测试的更多信息,请参阅测试您的应用页面。
- 在 Select Deployment Target 窗口中,选择您要运行测试的设备。如有必要,创建新的 Android 虚拟设备。点击 OK。
在 IDE 底部的 Run 窗口中监控测试进度。Android Studio 会对您的项目执行完整构建,并在 Run 窗口中打开一个带有您的测试名称的标签页,如图 3 所示。您可以在此标签页中检查测试是通过还是失败,以及测试运行了多长时间。当测试完成时,标签页将记录“测试运行完成”。

图 3. 在本地运行 Espresso 测试后,Run 窗口中的示例输出。
要了解有关编写测试运行配置的更多信息,请阅读创建和编辑运行/调试配置中的“为类或方法定义测试配置”部分。
使用 Firebase Test Lab for Android 运行 Espresso 测试
您可以将 Espresso Test Recorder 生成的测试与 Firebase Test Lab 配合使用,在云端对数百种设备配置测试您的应用。在 Spark 计划的免费每日配额内使用 Test Lab 测试应用是免费的。要使用 Firebase Test Lab 运行 Espresso 测试,请为您的应用创建一个 Firebase 项目,然后按照说明从 Android Studio 使用 Firebase Test Lab 运行测试。

图 4. 在多个设备上使用 Firebase Test Lab 运行测试后,Run 窗口中的示例输出。