我尝试使用Espresso
来测试我的应用程序。我正在测试的一个流程显示RecyclerView
,显示随机数量的ViewHolder
个对象。对于我的测试,我试图点击具有文本"测试"的特定ViewHolder
。以标题TextView
显示。
我使用以下代码点击相应的ViewHolder
:
onView((withId(R.id.recycler_view))).perform(actionOnHolderItem(CustomMatcher.withName(name), click()));
CustomMatcher.withName
的位置:
public static Matcher<RecyclerView.ViewHolder> withName(final String name)
{
return new BoundedMatcher<RecyclerView.ViewHolder, CustomAdapter.VHItem>(CustomAdapter.VHItem.class)
{
@Override
protected boolean matchesSafely(CustomAdapter.VHItem viewHolder)
{
return viewHolder.title.getText().toString().equalsIgnoreCase(name);
}
@Override
public void describeTo(Description description)
{
description.appendText("view holder with name: " + name);
}
};
}
这似乎很有用,因为没有找到匹配Espresso
的{{1}}错误,或者找不到被搜索的ViewHolder
等。
但是,大约10-15%的时间,实际上从未选择RecyclerView
。这意味着找到了视图,但未发生ViewHolder
操作。我已确认未通过登录ViewHolder的click
方法点击该视图,如下所示:
我的onClick
类绑定如下:
VHItem
所以基本上找到视图,滚动到等等但未选中!任何帮助表示赞赏!
谢谢, 扎克