Android 使用Robolectric 3.2.1进行UT时未绘制片段中的ViewPager

Android 使用Robolectric 3.2.1进行UT时未绘制片段中的ViewPager,android,android-viewpager,robolectric,Android,Android Viewpager,Robolectric,我正在用Robolectic 3.2.1进行UT。 我创建了一个活动和一个片段,其中都只包含一个ViewPager,如下所示: public class ViewPagerTestActivity extends FragmentActivity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState);

我正在用Robolectic 3.2.1进行UT。 我创建了一个活动和一个片段,其中都只包含一个ViewPager,如下所示:

public class ViewPagerTestActivity extends FragmentActivity {

  @Override
  protected void onCreate(@Nullable Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.viewpager_test);
  }
}

public class ViewPagerTestFragment extends Fragment {

  @Nullable
  @Override
  public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup 
        container, @Nullable Bundle savedInstanceState) {
      View view = inflater.inflate(R.layout.viewpager_test, container, false);
      return view;
  }
 }
和布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">

  <android.support.v4.view.ViewPager
      android:id="@+id/viewPager"
      android:layout_width="match_parent"
      android:layout_height="match_parent">
  </android.support.v4.view.ViewPager>
</LinearLayout>
但是当我跑的时候

Robolectric.setupActivity(ViewPagerTestActivity.class);
SupportFragmentTestUtil.startFragment(new ViewPagerFragment());
我发现ViewPager的onDraw()和onMeasure()都没有被调用。
有人能告诉我为什么或者怎么做才能在ViewPagerTestFragment中绘制ViewPager吗?

这不仅仅是关于
ViewPager
,还有
RecyclerView
和其他子视图

您必须模拟在屏幕上显示,如:

view.measure(SIZE, SIZE);
view.layout(0, 0, SIZE, SIZE);
对于
ViewPager
项,您必须在测试中模拟它,如:

fragment.adapter.instantiateItem(findViewPager(), 0)
Robolectric.flushForegroundThreadScheduler()