我有一个带有onCreate方法的Fragment,该方法会对传入的savedInstanceState Bundle进行一些处理。我正在使用Robolectric创建一个Activity,并使用Activity的FragmentManager启动Fragment。
我的问题是,我无法弄清楚如何从测试代码中插入savedInstanceState Bundle以验证使用它的代码路径。
我希望Robolectric有一个影子Fragment,可以让我直接设置bundle。
有什么想法吗?
我有一个带有onCreate方法的Fragment,该方法会对传入的savedInstanceState Bundle进行一些处理。我正在使用Robolectric创建一个Activity,并使用Activity的FragmentManager启动Fragment。
我的问题是,我无法弄清楚如何从测试代码中插入savedInstanceState Bundle以验证使用它的代码路径。
我希望Robolectric有一个影子Fragment,可以让我直接设置bundle。
有什么想法吗?
我最终使用反射并设置包私有字段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);
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();