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 的某些方面仍然有帮助 测试。