2016-07-20 2 views
2

В тесте эспрессо я хочу получить ссылку на мой ViewPager, поэтому я могу приложить к нему IdlingResource. Но findViewById возвращает null, хотя я подтверждаю, что перед этим отображается ViewPager.Activity.findViewById() возвращает null в тесте Espresso

// Passes 
onView(withId(R.id.viewPager)).check(matches(isDisplayed())); 
Activity activity = activityTestRule.getActivity(); 
assertNotNull(activity); 
// Fails 
assertNotNull(activity.findViewById(R.id.viewPager)); 

Любые идеи?

+0

Вы активируете действия в своем тесте? –

+0

Нет. Я использую только действие, созданное в правиле. Viewpager находится в фрагменте диалога, порожденном в активности, хотя, если это имеет значение. – TBridges42

ответ

2

Вы предоставляете не так много информации. Но позволяет работать с тем, что у нас есть.

Я предполагаю, что Activity был успешно запущен и отображаются DialogFragment (который содержит ViewPager) тоже:

Первой строку Опубликованной коды onView(withId(R.id.viewPager)).check(matches(isDisplayed())); действительно проходит, потому что Эспрессо поиск корыто всех мнений, которые были добавлены в текущее окно. И диалог находится где-то в иерархии макета окна.

Но assertNotNull(activity.findViewById(R.id.viewPager)); не сработает, потому что ViewPager нет на изображении содержания Activity, но в FragmentDialog.

Вы можете проверить иерархию просмотров с помощью Hierarchy Viewer. Сравните иерархию с диалогом и без него.

Почему вы хотите добавить IdlingResource в ViewPager?

+0

О, ffs. Вы абсолютно правы. Я слишком много работал. Мне нужен IdlingResource, потому что я пытался написать тест, включающий возможность просмотра ViewPager, но Espresso не дождался завершения проверки, что привело к сбою моего теста. Теперь он проходит отлично, когда я ищу его в фрагменте, где он, а не в активности. – TBridges42

 Смежные вопросы

  • Нет связанных вопросов^_^