測試應用程式的 UI,確認撰寫程式碼的行為是否正確。這有助於及早發現錯誤,並提升應用程式品質。
Compose 提供一組測試 API,可找出元素、驗證其屬性,以及執行使用者動作。API 也包含時間管理等進階功能。使用這些 API 建立穩健的測試,驗證應用程式的行為。
View
如果您使用檢視區塊而非 Compose,請參閱「在 Android 上測試應用程式」一節。
特別是「自動執行 UI 測試」指南,是很好的起點。本文將說明如何自動執行裝置端測試,包括使用檢視區塊時。
核心概念
以下是測試 Compose 程式碼的幾個重要概念:
- 語意:語意會指定 UI 的意義,讓測試與特定元素互動。
- 測試 API:測試 API 可用於找出元素、驗證其屬性,以及執行使用者動作。
- 同步處理:同步處理會驗證測試是否等待 UI 閒置,再執行動作或進行判斷。
- 互通性:互通性可讓測試在同一個應用程式中,同時使用 Compose 和以 View 為基礎的元素。
測試一覽表
如要瞭解 Compose 測試的所有重要主題,請參閱測試一覽表。
設定
設定應用程式,以便測試 Compose 程式碼。
首先,請將下列依附元件新增至包含 UI 測試的模組的 build.gradle
檔案:
// Test rules and transitive dependencies:
androidTestImplementation("androidx.compose.ui:ui-test-junit4:$compose_version")
// Needed for createComposeRule(), but not for createAndroidComposeRule<YourActivity>():
debugImplementation("androidx.compose.ui:ui-test-manifest:$compose_version")
這個模組包含 ComposeTestRule
和名為 AndroidComposeTestRule
的 Android 實作透過這項規則,您可以設定撰寫內容或存取活動。您可以使用工廠函式建構規則,包括 createComposeRule
,或在需要存取活動時使用 createAndroidComposeRule
。Compose 的一般 UI 測試如下所示:
// file: app/src/androidTest/java/com/package/MyComposeTest.kt
class MyComposeTest {
@get:Rule val composeTestRule = createComposeRule()
// use createAndroidComposeRule<YourActivity>() if you need access to
// an activity
@Test
fun myTest() {
// Start the app
composeTestRule.setContent {
MyAppTheme {
MainScreen(uiState = fakeUiState, /*...*/)
}
}
composeTestRule.onNodeWithText("Continue").performClick()
composeTestRule.onNodeWithText("Welcome").assertIsDisplayed()
}
}
其他資源
- 在 Android 上測試應用程式:這個主要的 Android 測試到達網頁,提供更廣泛的測試基礎知識和技術。
- 測試基礎知識:進一步瞭解測試 Android 應用程式背後的概念。
- 本機測試:您可以在自己的工作站上,在本機執行部分測試。
- 檢測設備測試:建議您也執行檢測設備測試。也就是直接在裝置上執行的測試。
- 持續整合: 持續整合可讓您將測試整合至部署管道。
- 測試不同螢幕大小:使用者可選擇的裝置種類繁多,因此您應測試不同螢幕大小。
- Espresso:雖然 Espresso 是專為以 View 為基礎的 UI 設計,但您仍可運用相關知識,進行部分 Compose 測試。
程式碼實驗室
詳情請參閱 Jetpack Compose 測試程式碼研究室。
範例
為您推薦
- 注意:系統會在 JavaScript 關閉時顯示連結文字
- Compose 中的語意
- Compose 中的視窗插邊
- 其他考量