小编Nem*_*kov的帖子

Robolectric使用Fragments和ActionBarCompat NullPointerException

我有一个Android应用程序,它使用片段并实现了ActionBarCompat.我写了如下所示的简单Robolectric测试:

@Test
public void shouldNotBeNull() throws Exception {
    MainFragment mainFragment = new MainFragment();
    startFragment(mainFragment);
    assertThat(mainFragment, notNullValue());
    assertThat(mainFragment.getActivity(), notNullValue());
}

private void startFragment(MainFragment fragment) {
    FragmentActivity activity = new FragmentActivity();
    shadowOf(activity).callOnCreate(null);
    shadowOf(activity).callOnStart();
    shadowOf(activity).callOnResume();

    FragmentManager fragmentManager = activity.getSupportFragmentManager();
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
    fragmentTransaction.add(fragment, null);
    fragmentTransaction.commit();
}
Run Code Online (Sandbox Code Playgroud)

我得到以下异常:

java.lang.NullPointerException: null
at android.app.Activity.invalidateOptionsMenu(Activity.java:2595)
at android.support.v4.app.ActivityCompatHoneycomb.invalidateOptionsMenu(ActivityCompatHoneycomb.java:30)
at android.support.v4.app.FragmentActivity.supportInvalidateOptionsMenu(FragmentActivity.java:572)
at android.support.v4.app.Fragment.setHasOptionsMenu(Fragment.java:708)
at com.example.android.ui.MainFragment.onCreate(MainFragment.java:599)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:834)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1080)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:622)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1416)
at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:420)
at org.robolectric.util.Scheduler.postDelayed(Scheduler.java:37)
at org.robolectric.shadows.ShadowLooper.post(ShadowLooper.java:198)
at org.robolectric.shadows.ShadowHandler.postDelayed(ShadowHandler.java:56)
at org.robolectric.shadows.ShadowHandler.post(ShadowHandler.java:51)
at android.os.Handler.post(Handler.java)
at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1322)
at …
Run Code Online (Sandbox Code Playgroud)

java android robolectric

6
推荐指数
1
解决办法
1366
查看次数

标签 统计

android ×1

java ×1

robolectric ×1