我想在列表中查看Save€XX的显示.保存€XX是一个TextView,可以是VISIBLE
或INVISIBLE
.我使用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.
如果TextView存在于带有Espresso的ListView中,有没有办法?
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: ...]>
经过几次尝试,我找到了方法.
在这种情况下,我们应该使用组合方法并使用数据和视图层.我们访问ListView
的ID
,选择第一项.然后检查它是否为"保存"文本.
onData(anything()) .inAdapterView(withId(R.id.list_view)) .atPosition(0) .onChildView(withId(R.id.suggestion_saving)) .check(matches(withText(startsWith("Save"))));
奇迹般有效.请享用!