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

Ran*_*ndy 2 android android-espresso material-design material-ui

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

onView(withId(R.id.chip)).perform(click())
Run Code Online (Sandbox Code Playgroud)

您将如何使用 espresso 找到关闭图标?

Ran*_*ndy 5

使用浓缩咖啡表达式没有简单的方法来做到这一点,但在摆弄它之后,似乎 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()
    }
}
Run Code Online (Sandbox Code Playgroud)

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

onView(withId(R.id.chip)).perform(ClickCloseIconAction())
Run Code Online (Sandbox Code Playgroud)