簡體   English   中英

在Robolectric中使用savedInstanceState Bundle測試Fragment的onCreate方法?

[英]Testing a Fragment's onCreate method with a savedInstanceState Bundle in Robolectric?

我有一個帶有onCreate方法的Fragment,它使用傳入的savedInstanceState Bundle做一些事情。 我正在使用Robolectric創建一個Activity並使用Activity的FragmentManager啟動Fragment。

我遇到的問題是我無法弄清楚如何從測試代碼插入savedInstanceState Bundle來驗證使用它的代碼路徑。

我希望Robolectric有一個影子碎片讓我直接設置捆綁。

有任何想法嗎?

如果您使用Robolectric 2.x,那么您可以將Bundle傳遞給activity:

Bundle savedBundle = new Bundle();

activity = buildActivity( FragmentActivity.class ).create( savedBundle ).start().resume().get();

MyFragment fragment = new MyFragment();

FragmentManager fragmentManager = activity.getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.add( fragment, null );
fragmentTransaction.commit();

我最后使用了反射並將package-private字段mSavedFragmentState設置為我想要接收的Bundle。

    Fragment fragment = new YourFragment();
    Bundle bundle = new Bundle();

    Field field = Fragment.class.getDeclaredField("mSavedFragmentState");
    field.setAccessible(true);
    field.set(fragment, bundle);

    SupportFragmentTestUtil.startFragment(fragment);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM