Android 使用MergeAdapter和Espresso检查行数
我想编写一个单元测试来验证合并适配器中列出的用户数 我的Android 使用MergeAdapter和Espresso检查行数,android,unit-testing,android-testing,android-espresso,Android,Unit Testing,Android Testing,Android Espresso,我想编写一个单元测试来验证合并适配器中列出的用户数 我的MergeAdapter列表视图有三个元素: 带有一些按钮的标题 用户的适配器 带有一些按钮的页脚 我已经找到以下代码来检查listview中的子级数: class Matchers { public static Matcher<View> withListSize (final int size) { return new TypeSafeMatcher<View>() { @Over
MergeAdapter
列表视图有三个元素:
- 带有一些按钮的标题
- 用户的适配器
- 带有一些按钮的页脚
class Matchers {
public static Matcher<View> withListSize (final int size) {
return new TypeSafeMatcher<View>() {
@Override public boolean matchesSafely (final View view) {
return ((ListView) view).getChildCount () == size;
}
@Override public void describeTo (final Description description) {
description.appendText ("ListView should have " + size + " items");
}
};
}
它应该检查列表中是否有2个用户,但是这个检查失败,因为它再次返回3个用户(正如我在前面提到的有部分)
这里有一个指向MergeAdapter的链接:正如您所说,测试实际上返回3,因为它捕获了父视图,正如您所说,父视图有三个部分 您需要添加一个额外的匹配器来获取第二个元素 查看Java库中包含的Hamcrest matchers参考: 您可能需要将
与父项
一起使用、与子项
一起使用、与子项
一起使用、与子项
进行匹配。因此,在此之后,您的代码可能如下所示:
onView(withParent(withId(android.R.id.list))).check(ViewAssertions.matches(Matchers.withListSize(2)));
我不确定,但如果您已经在使用任何类型的适配器,您可以使用onData
而不是onView
EspressoViewMatcher
您可以在这里找到一些有用的信息:
希望它有帮助正如您所说,测试实际上返回3,因为它捕获了父视图,正如您所说,父视图有三个部分 您需要添加一个额外的匹配器来获取第二个元素 查看Java库中包含的Hamcrest matchers参考: 您可能需要将
与父项
一起使用、与子项
一起使用、与子项
一起使用、与子项
进行匹配。因此,在此之后,您的代码可能如下所示:
onView(withParent(withId(android.R.id.list))).check(ViewAssertions.matches(Matchers.withListSize(2)));
我不确定,但如果您已经在使用任何类型的适配器,您可以使用onData
而不是onView
EspressoViewMatcher
您可以在这里找到一些有用的信息:
希望能有所帮助