Espresso

使用 Espresso 编写简洁、美观且可靠的 Android UI 测试。

以下代码片段显示了 Espresso 测试的示例

Kotlin

@Test
fun greeterSaysHello() {
    onView(withId(R.id.name_field)).perform(typeText("Steve"))
    onView(withId(R.id.greet_button)).perform(click())
    onView(withText("Hello Steve!")).check(matches(isDisplayed()))
}

Java

@Test
public void greeterSaysHello() {
    onView(withId(R.id.name_field)).perform(typeText("Steve"));
    onView(withId(R.id.greet_button)).perform(click());
    onView(withText("Hello Steve!")).check(matches(isDisplayed()));
}

核心 API 小巧、可预测且易于学习,同时仍保持开放以供自定义。Espresso 测试清楚地说明了期望、交互和断言,而不会因样板内容、自定义基础结构或凌乱的实现细节而分心。

Espresso 测试运行速度非常快!它允许您抛弃等待、同步、休眠和轮询,而是在应用程序 UI 处于静止状态时对其进行操作和断言。

目标受众

Espresso 面向开发人员,他们认为自动化测试是开发生命周期中不可或缺的一部分。虽然它可以用于黑盒测试,但 Espresso 的全部功能可以通过熟悉被测代码库的人员解锁。

同步功能

每次测试调用 onView() 时,Espresso 都会等待执行相应的 UI 操作或断言,直到满足以下同步条件

  • 消息队列中没有任何 Espresso 需要立即处理的消息。
  • 没有 AsyncTask 实例当前正在执行任务。
  • 所有用户定义的 空闲资源 均处于空闲状态。

通过执行这些检查,Espresso 大大提高了在任何给定时间只能发生一个 UI 操作或断言的可能性。此功能为您提供更可靠和可靠的测试结果。

  • espresso-core - 包含核心和基本 View 匹配器、操作和断言。请参阅 基础知识食谱
  • espresso-web - 包含 WebView 支持的资源。
  • espresso-idling-resource - Espresso 用于与后台作业同步的机制。
  • espresso-contrib - 包含 DatePickerRecyclerViewDrawer 操作、无障碍检查以及 CountingIdlingResource 的外部贡献。
  • espresso-intents - 用于验证和存根 Intent 以进行独立测试的扩展。
  • espresso-remote - Espresso 的 多进程 功能所在位置。

您可以阅读 发行说明,了解有关最新版本的更多信息。

其他资源

有关在 Android 测试中使用 Espresso 的更多信息,请参阅以下资源。

示例