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 - 用於驗證密封測試並虛設常式意圖的擴充功能。
  • espresso-remote - Espresso 多程序功能的位置。

如要進一步瞭解最新版本,請參閱版本資訊

其他資源

如要進一步瞭解如何在 Android 測試中使用 Espresso,請參閱下列資源。

範例