Android 意式浓缩咖啡:在adapterView中插入字符串

Android 意式浓缩咖啡:在adapterView中插入字符串,android,testing,android-espresso,Android,Testing,Android Espresso,如果listAdapter的一个或多个项目中显示字符串,是否可以使用android espresso验证ist 尝试这样的事情: onData(anything()).inAdapterView(withId(R.id.test)).check(matches(hasToString("Anmeldung steht noch aus!"))); 这必须有效,但仅基于列表项位置: onData(instanceOf(YourListItem.class)) .inAdapterView(w

如果listAdapter的一个或多个项目中显示字符串,是否可以使用android espresso验证ist

尝试这样的事情:

onData(anything()).inAdapterView(withId(R.id.test)).check(matches(hasToString("Anmeldung steht noch aus!")));

这必须有效,但仅基于列表项位置:

onData(instanceOf(YourListItem.class))
  .inAdapterView(withId(R.id.test))
  .atPosition(0)
  .check(matches(hasDescendant(withText("Anmeldung steht noch aus!"))));
如果要检查适配器中的某个位置是否存在唯一文本,则应创建自己的匹配器,因此,它类似于:

onData(withYourListItemText("Anmeldung steht noch aus!"))
  .inAdapterView(withId(R.id.test))
  .check(matches(isDisplayed()));
和匹配器:

public static Matcher<Object> withYourListItemText(final Matcher<String> yourListItemText) {
    Checks.checkNotNull(yourListItemText);
    return new BoundedMatcher<Object, YourListItem>(YourListItem.class) {
        @Override
        public boolean matchesSafely(YourListItem item) {
            return yourListItemText.matches(item.getYourItemText());
        }

        @Override
        public void describeTo(Description description) {
            description.appendText("with text: " + yourListItemText.toString());
            yourListItemText.describeTo(description);
        }
    };
}
带有yourListItemText的公共静态匹配器(最终匹配器yourListItemText){
Checks.checkNotNull(yourListItemText);
返回新的BoundedMatcher(YourListItem.class){
@凌驾
公共布尔匹配安全(YourListItem){
返回yourListItemText.matches(item.getyourtitemtext());
}
@凌驾
公共无效说明(说明){
description.appendText(“带文本:+yourListItemText.toString());
yourListItemText.descripbeto(description);
}
};
}

这必须有效,但仅基于列表项的位置:

onData(instanceOf(YourListItem.class))
  .inAdapterView(withId(R.id.test))
  .atPosition(0)
  .check(matches(hasDescendant(withText("Anmeldung steht noch aus!"))));
如果要检查适配器中的某个位置是否存在唯一文本,则应创建自己的匹配器,因此,它类似于:

onData(withYourListItemText("Anmeldung steht noch aus!"))
  .inAdapterView(withId(R.id.test))
  .check(matches(isDisplayed()));
和匹配器:

public static Matcher<Object> withYourListItemText(final Matcher<String> yourListItemText) {
    Checks.checkNotNull(yourListItemText);
    return new BoundedMatcher<Object, YourListItem>(YourListItem.class) {
        @Override
        public boolean matchesSafely(YourListItem item) {
            return yourListItemText.matches(item.getYourItemText());
        }

        @Override
        public void describeTo(Description description) {
            description.appendText("with text: " + yourListItemText.toString());
            yourListItemText.describeTo(description);
        }
    };
}
带有yourListItemText的公共静态匹配器(最终匹配器yourListItemText){
Checks.checkNotNull(yourListItemText);
返回新的BoundedMatcher(YourListItem.class){
@凌驾
公共布尔匹配安全(YourListItem){
返回yourListItemText.matches(item.getyourtitemtext());
}
@凌驾
公共无效说明(说明){
description.appendText(“带文本:+yourListItemText.toString());
yourListItemText.descripbeto(description);
}
};
}

您的意思是整个列表项与测试字符串匹配?是的,我想检查是否至少有一项包含此字符串。您的意思是整个列表项与测试字符串匹配?是的,我想检查是否至少有一项包含此字符串。