Espresso:适配器视图中的字符串
Espresso: String in adapterView
是否可以使用 android-espresso 来验证字符串是否显示在 listAdapter 的多个项目之一中?
尝试这样的事情:
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);
}
};
}
是否可以使用 android-espresso 来验证字符串是否显示在 listAdapter 的多个项目之一中?
尝试这样的事情:
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);
}
};
}