我有一个带有onCreate方法的Fragment,它使用传入的savedInstanceState Bundle做一些事情。我正在使用Robolectric创建一个Activity并使用Activity的FragmentManager启动Fragment。
我遇到的问题是我无法弄清楚如何从测试代码插入savedInstanceState Bundle来验证使用它的代码路径。
我希望Robolectric有一个影子碎片让我直接设置捆绑。
有什么想法吗?
答案 0 :(得分:0)
如果您使用Robolectric 2.x,则可以将Bundle
传递给活动:
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();
答案 1 :(得分:0)
我最终使用了反射并将包私有字段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);