[英]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.