使用 Espresso 进行 运行 UI 测试,如何在 Material 设计芯片布局中引用关闭图标?

Using Espresso to Run UI Tests, How do you reference the Close Icon in a Material Design Chip Layout?

通常情况下,如果我们想使用 espresso 按下按钮,您需要等待带有 ID 的视图加载。然后执行点击。 Material 设计芯片可让您定义一个关闭图标并在关闭图标上放置一个侦听器。但是,这意味着 closeIcon 没有可直接引用的 ID,并在布局检查器中显示为 Chip 的一部分。

onView(withId(R.id.chip)).perform(click())

你会怎么用espresso找到关闭的icon?

用 espresso 表达式没有简单的方法,但在摆弄它之后,似乎 Material Chip 公开了一个 performCloseIconClick() 函数,我最终将其插入到自定义视图操作中。希望这对你们中的一些人有所帮助。

 class ClickCloseIconAction : ViewAction {

    override fun getConstraints(): Matcher<View> {
        return ViewMatchers.isAssignableFrom(Chip::class.java)
    }

    override fun getDescription(): String {
        return "click drawable "
    }

    override fun perform(uiController: UiController, view: View) {
        val chip = view as Chip//we matched
        chip.performCloseIconClick()
    }
}

这意味着你可以这样称呼它

onView(withId(R.id.chip)).perform(ClickCloseIconAction())