android – Espresso – 检查ListView中是否存在TextView

前端之家收集整理的这篇文章主要介绍了android – Espresso – 检查ListView中是否存在TextView前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想在列表中查看Save€XX的显示.保存€XX是一个可见或不可见的TextView.我使用JUnit 4和Espresso 2.2.1.

我试着像这样检查:

onView(withText(startsWith("Save"))).check(matches(isDisplayed()));

但总是得到一个错误

android.support.test.espresso.AmbiguousViewMatcherException: 'with text: a string starting with "Save"' matches multiple views in the hierarchy.

如果使用Espresso在ListView中存在TextView,有没有办法?

UPDATE

我也试过使用onData:

onData(hasToString(startsWith("Save")))
                .inAdapterView(withId(R.id.suggestion_list_view)).atPosition(0)
                .check(matches(isDisplayed()));

但似乎onData适用于数据层,但不适用于视图层.因此,我收到错误

java.lang.RuntimeException: No data found matching: with toString() a string starting with "Save" contained values: <[Data: ...]>

解决方法

经过几次尝试,我找到了方法.

在这种情况下,我们应该使用组合方法并使用数据和视图层.我们按ID访问ListView并选择第一项.然后检查它是否为“保存”文本.

onData(anything())
                .inAdapterView(withId(R.id.list_view))
                .atPosition(0)
                .onChildView(withId(R.id.suggestion_saving))
                .check(matches(withText(startsWith("Save"))));

奇迹般有效.请享用!

猜你在找的Android相关文章