Как настроить таргетинг на Viewpager с помощью фрагмента, который реализует RecylerView с идентификатором, соответствующим нескольким представлениям?Espresso Recylerview в ViewPager соответствует нескольким представлениям
У меня есть MainActivity, у которого есть Viewpager. Viewpager имеет 5 вкладок. В этих 5 вкладках я использую RecylerViews для загрузки изображений в каждом из них.
RecylerView XML повторно используется в разных фрагментах, поэтому при доступе к нему с помощью Espresso он продолжает жаловаться на идентификатор, соответствующий нескольким представлениям.
<android.support.v7.widget.RecyclerView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
Мой RecylerView не загружается какой-либо текст, только загружает изображения, так что я не могу даже сделать withText("Text here")
. Я не могу использовать onData()
для RecylerViews.
@RunWith(AndroidJUnit4.class)
@LargeTest
public class ExampleTest {
@Rule
public ActivityTestRule<MainActivity> mActivityRule = new ActivityTestRule<>(
MainActivity.class);
Activity activity = mActivityRule.getActivity();
@Test
public void ExampleMethod() {
// perform a swipe
onView(withId(R.id.viewpager)).perform(swipeLeft());
// try to click on one of the recycler view items.
// this crashes:
onView(withId(R.id.recycler_view))
.perform(RecyclerViewActions.actionOnItemAtPosition(2, click()));
}
}
Так он выходит из строя, и указывает на ошибку
android.support.test.espresso.AmbiguousViewMatcherException: 'with id: com.example.app:id/recycler_view' matches multiple views in the hierarchy. Problem views are marked with '****MATCHES****' below.
// Список различных иерархий
View Hierarchy:
View Hierarchy:
+>DecorView{id=-1, visibility=VISIBLE, width=720, height=1280,
has-focus=false, has-focusable=true, has-window-focus=true,
is-clickable=false, is-enabled=true, is-focused=false,
is-focusable=false, is-layout-requested=false, is-selected=false,
root-is-layout-requested=false, has-input-connection=false, x=0.0,
y=0.0, child-count=1}
//...
Спасибо, но это не сработало. Ошибка: recycler_view и отображается на экране пользователю) 'соответствует нескольким представлениям в иерархии. –
isDisplayed() сохранен мой день (у меня было несколько RecycleView для разных вкладок из TabLayout). – Shondeslitch