Espresso

您可以使用 Espresso 来编写简洁、美观且可靠的 Android 界面测试。

以下代码段展示了 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 测试运行速度极快!当它在静止状态下对应用界面进行操纵和断言时,让您无需等待、同步、休眠和轮询。

目标受众群体

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

同步功能

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

  • 消息队列为空。
  • 没有当前正在执行任务的 AsyncTask 实例。
  • 开发者定义的所有空闲资源都处于空闲状态。

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

软件包

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

您可以阅读版本说明来详细了解最新版本。

其他资源

如需详细了解如何在 Android 测试中使用 Espresso,请参阅以下资源。

示例