sách gpt4 ai đã đi

Kiểm tra espresso Android - kiểm tra xem View trong mục recyclerview có hiển thị không

In lại 作者:搜寻专家 更新时间:2023-11-01 09:19:04 33 4
mua khóa gpt4 Nike

我有一个 ID 为“rv_list”的 RecyclerView。单击任何 RecyclerView 项目时,每个项目内都有一个可见的 id 为“star”的 View 。

我想用 expresso 检查这个 -单击第一个 RecyclerView 项,检查 View R.id.star 是否可见。

我的代码是-

@Bài kiểm tra
fun checkIfStarVisibleOnItemClick() {

onView(withId(R.id.rv_list))
.perform(RecyclerViewActions.actionOnItemAtPosition(0, click()))


onView(withId(R.id.star))
.check(matches(isDisplayed()))

}

我收到这个错误 -

id/star' matches multiple views in the hierarchy

1 Câu trả lời

检查带有 nhận dạng 'star' 的项目是否在 'rv_list' RecyclerView 的第一个元素(位置 0)中可见的代码应该是:

onView(withRecyclerView(R.id.rv_list)
.atPositionOnView(0, R.id.star))
.check(matches(isDisplayed()));

这个方法是 espresso-contrig 的一部分。

làm mới

现在我声明这个方法:

fun nthChildOf(parentMatcher: Matcher, childPosition: Int): Matcher? {
return object : TypeSafeMatcher() {
override fun describeTo(description: Description) {
description.appendText("with $childPosition child view of type parentMatcher")
}

override fun matchesSafely(view: View): Boolean {
if (view.parent !is ViewGroup) {
return parentMatcher.matches(view.parent)
}
val group = view.parent as ViewGroup
return parentMatcher.matches(view.parent) && group.getChildAt(childPosition) == view
}
}
}

并以这种方式使用它:

onView(allOf(
withId(R.id.star),
isDescendantOfA(
nthChildOf(withId(R.id.rv_list), 0))
)).check(matches(isDisplayed()))

关于Android espresso 测试 - 测试 recyclerview 项目内的 View 是否可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58259255/

33 4 0
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com