Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用MergeAdapter和Espresso检查行数_Android_Unit Testing_Android Testing_Android Espresso - Fatal编程技术网

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
列表视图有三个元素:

  • 带有一些按钮的标题
  • 用户的适配器
  • 带有一些按钮的页脚
我已经找到以下代码来检查listview中的子级数:

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
Espresso
ViewMatcher

您可以在这里找到一些有用的信息:


希望它有帮助

正如您所说,测试实际上返回3,因为它捕获了父视图,正如您所说,父视图有三个部分

您需要添加一个额外的匹配器来获取第二个元素

查看Java库中包含的Hamcrest matchers参考:

您可能需要将
与父项
一起使用、
与子项
一起使用、
与子项
一起使用、
与子项
进行匹配。因此,在此之后,您的代码可能如下所示:

onView(withParent(withId(android.R.id.list))).check(ViewAssertions.matches(Matchers.withListSize(2)));
我不确定,但如果您已经在使用任何类型的适配器,您可以使用
onData
而不是
onView
Espresso
ViewMatcher

您可以在这里找到一些有用的信息:

希望能有所帮助