互操作性

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

Compose 可与常见的测试框架集成。

与 Espresso 的互操作性

在混合应用中,您可以在视图层次结构中找到 Compose 组件, Compose 可组合项中的 View(通过 AndroidView 可组合项)。

无需执行任何特殊步骤即可匹配这两种类型。将数据视图与 Espresso 的 onView ,以及带有 ComposeTestRule 的 Compose 元素。

        @Test

        fun
         
        androidViewInteropTest
        ()
         
        {

           
         // Check the initial state of a TextView that depends on a Compose state.

           
         Espresso
        .
        onView
        (
        withText
        (
    "    Hello
         
        Views
    "    )).
        check
        (
        matches
        (
        isDisplayed
        ()))

           
         // Click on the Compose button that changes the state.

           
         composeTestRule
        .
        onNodeWithText
        (
    "    Click
         
        here
    "    ).
        performClick
        ()

           
         // Check the new value.

           
         Espresso
        .
        onView
        (
        withText
        (
    "    Hello
         
        Compose
    "    )).
        check
        (
        matches
        (
        isDisplayed
        ()))

        }

与 UiAutomator 的互操作性

默认情况下,只能通过 UiAutomator 访问可组合项 方便的描述词(显示的文字、内容说明等)。如果您想 要访问使用 Modifier.testTag 的任何可组合项,您需要启用 特定可组合项的语义属性 testTagsAsResourceId 子树。启用此行为对于没有任何自定义规则的可组合项很有用 其他唯一句柄,例如可滚动的可组合项(例如 LazyColumn )。

仅在可组合项层次结构中的较高层级启用语义属性一次, 确保可从以下位置访问所有带有 Modifier.testTag 的嵌套可组合项: UiAutomator。

        Scaffold
        (

           
         // Enables for all composables in the hierarchy.

           
         modifier
         
        =
         
        Modifier
        .
        semantics
         
        {

               
         testTagsAsResourceId
         
        =
         
        true

           
         }

        ){

           
         // Modifier.testTag is accessible from UiAutomator for composables nested here.

           
         LazyColumn
        (

               
         modifier
         
        =
         
        Modifier
        .
        testTag
        (
    "    myLazyColumn
    "    )

           
         ){

               
         // Content

           
         }

        }

任何具有 Modifier.testTag(tag) 的可组合项均可通过使用 使用与 resourceName 相同的 tag By.res(resourceName)

        val
         
        device
         
        =
         
        UiDevice
        .
        getInstance
        (
        getInstrumentation
        ())


        val
         
        lazyColumn
        :
         
        UiObject2
         
        =
         
        device
        .
        findObject
        (
        By
        .
        res
        (
    "    myLazyColumn
    "    ))

        // Some interaction with the lazyColumn.

其他资源

  • 在 Android 平台上测试应用 :主要的 Android 测试 着陆页让您更全面地了解测试基础知识和技术。
  • 测试基础知识 :了解详情 关于测试 Android 应用的核心概念。
  • 本地测试 :您可以运行一些测试 在您自己的工作站上运行
  • 插桩测试 :适合 来运行插桩测试也就是说, 。
  • 持续集成 : 借助持续集成,您可以将测试集成到部署中 流水线。
  • 测试不同的屏幕尺寸 :使用 您应针对不同的屏幕进行测试 尺寸。
  • Espresso :虽然适用于基于 View 的应用 界面、Espresso 知识对于 Compose 的某些方面仍然有帮助 测试。

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

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