Activity.findViewById()在Espresso测试中返回null

时间:2016-07-20 02:11:50

标签: android android-espresso

在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));

有什么想法吗?

1 个答案:

答案 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