Espresso:adapterView中的字符串

PKA*_*KAP 1 testing android android-espresso

如果一个字符串显示在listAdapter的一个或多个项目中,那么android-espresso是否可以验证?

试着像这样的人:

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

den*_*nys 6

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

onData(instanceOf(YourListItem.class))
  .inAdapterView(withId(R.id.test))
  .atPosition(0)
  .check(matches(hasDescendant(withText("Anmeldung steht noch aus!"))));
Run Code Online (Sandbox Code Playgroud)

如果要检查适配器中某处是否存在唯一文本 - 您应该创建自己的匹配器,因此,它将类似于:

onData(withYourListItemText("Anmeldung steht noch aus!"))
  .inAdapterView(withId(R.id.test))
  .check(matches(isDisplayed()));
Run Code Online (Sandbox Code Playgroud)

和匹配:

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);
        }
    };
}
Run Code Online (Sandbox Code Playgroud)