测试 Compose 布局

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

测试应用界面,验证 Compose 代码的行为是否符合 正确。这样,您就可以及早发现错误,提高应用质量。

Compose 提供了一组测试 API,用于查找元素并验证其 属性,以及执行用户操作。这些 API 还包括 例如时间操纵使用这些 API 创建强大的测试, 应用行为

视图

如果您使用的是 View,而不是 Compose,请参阅常规测试应用在 Android 部分。

具体而言,最好从自动化界面测试 指南入手。它 阐述了如何自动执行在设备上运行的测试,包括使用 观看次数。

关键概念

以下是测试 Compose 代码的一些关键概念。

  • 语义 :Compose 测试使用语义与界面进行交互。 为界面的各个部分赋予含义,并随界面一起生成 层级结构。
  • 测试 API :Compose 提供了用于查找元素、 对其状态和属性进行断言, 来模拟用户互动
  • 同步 :默认情况下,Compose 测试会自动 与界面同步,等待界面空闲后再进行断言 或执行操作
  • 互操作性 :在混合应用中,测试可以无缝互动 同时支持基于 Compose 和 View 的元素,并与其他测试集成 框架。

测试备忘单

请参阅测试备忘单 ,简要了解您应考虑的所有关键主题 了解如何在 Compose 中进行测试。

设置

设置您的应用,以便测试 Compose 代码。

首先,将以下依赖项添加到包含界面测试的模块的 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 和一个 Android 实现 名为 AndroidComposeTestRule 。通过此规则,您可以将 Compose 内容或访问活动。您可以使用工厂函数来构建规则, createComposeRule ;如果您需要访问某个活动记录,请 createAndroidComposeRule 。Compose 的典型界面测试如下所示:

// 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 的应用 界面、Espresso 知识对于 Compose 的某些方面仍然有帮助 测试。

Codelab

如需了解详情,请参阅 Jetpack Compose 测试 Codelab

示例

本页面上的内容和代码示例受内容许可 部分所述许可的限制。Java 和 OpenJDK 是 Oracle 和/或其关联公司的注册商标。

最后更新时间 (UTC):2024-08-29。