測試應用程式的 UI,確認 Compose 程式碼的行為是否正確。進而及早找出錯誤並改善應用程式品質。
Compose 提供一組測試 API 來尋找元素、驗證其屬性,以及執行使用者動作。這些 API 也包含進階功能 例如時間操縱使用這些 API 建立完善的測試來驗證應用程式行為。
觀看次數
如果您要使用 View (而非 Compose),請參閱一般的「在 Android 上測試應用程式」一節。
具體來說,請參閱「自動化 UI 測試」指南。說明如何自動在裝置上執行測試,包括使用檢視畫面的情況。
核心概念
以下是測試 Compose 程式碼的一些重要概念。
- 語意:Compose 測試會使用語意與 UI 互動,藉此為 UI 元件提供意義,並和 UI 階層一起產生。
- 測試 API:Compose 提供測試 API 來尋找元素、對其狀態和屬性做出斷言,以及執行模擬使用者互動的動作。
- 同步處理:根據預設,Compose 測試會自動與 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 實作。透過這項規則,您可以設定 Compose 內容或存取活動。您可以使用 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:雖然適用於以 View 為基礎的 UI,但 Espresso 知識在 Compose 測試的某些方面仍非常實用。
程式碼研究室
詳情請參閱 Jetpack Compose Testing 程式碼研究室。
範例
為您推薦
- 注意:系統會在 JavaScript 關閉時顯示連結文字
- Compose 中的語意
- Compose 中的視窗插邊
- 其他考量