2017-08-03 8 views
1

Robolectic 3.2.1でUTを実行しています。RobolectricでUTを実行している間、ViewPagerの断片が描画されない3.2.1

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; 
    } 
} 

とレイアウトファイル:私は

Robolectric.setupActivity(ViewPagerTestActivity.class); 
を実行したときに

<?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> 

ViewPagerは、ViewPagerTestActivityとよく行って は、私は活動との両方が、このように内部にのみViewPagerを含むフラグメントを作成します

でも実行したとき

SupportFragmentTestUtil.startFragment(new ViewPagerFragment()); 

ViewPagerのonDraw()とonMeasure()の両方が呼び出されないことがわかります。 ViewPagerをViewPagerTestFragmentで描画させるために、なぜ、また何をすべきか教えていただけますか?

答えて

1

これは約ViewPagerだけでなく、RecyclerViewと他の子ビューです。

あなたが好きな画面に表示をシミュレートする必要があります。

view.measure(SIZE, SIZE); 
view.layout(0, 0, SIZE, SIZE); 

など、あなたがテストでそれをシミュレートする必要がViewPager項目について:

fragment.adapter.instantiateItem(findViewPager(), 0) 
Robolectric.flushForegroundThreadScheduler() 
関連する問題