在Espresso测试中,我想引用我的ViewPager
,以便我可以附加IdlingResource
。但findViewById
会返回null
,即使我在此之前确认显示ViewPager
。
// Passes
onView(withId(R.id.viewPager)).check(matches(isDisplayed()));
Activity activity = activityTestRule.getActivity();
assertNotNull(activity);
// Fails
assertNotNull(activity.findViewById(R.id.viewPager));
有什么想法吗?
答案 0 :(得分:3)
您提供的信息不多。但是,让我们使用我们拥有的东西。
我认为Activity
已成功启动,DialogFragment
(包含ViewPager
)也会显示:
发布的代码onView(withId(R.id.viewPager)).check(matches(isDisplayed()));
的第一行确实通过了,因为Espresso会搜索已添加到当前窗口的所有视图。对话框位于窗口布局层次结构中的某个位置。
但是assertNotNull(activity.findViewById(R.id.viewPager));
确实失败了,因为ViewPager
不在Activity
的内容视图中,而在FragmentDialog
中。
您可以借助Hierarchy Viewer验证视图层次结构。使用和不使用对话框比较层次结构。
为什么要向IdlingResource
添加ViewPager
?