2016-05-03 22 views
4

Roboelectricを使用して、ダイアログのフラグメントが表示されているかどうかをテストします。Roboelctricを使用したDialogFragment

@Test 
public void dialogFragmentIsShownToTheUser() { 
     DialogFragment dialog = new SomeDialogFragment(); 
     DialogFragment someDialogFragment = new SomeDialogFragment(); 
     startFragment(someDialogFragment); 

     SomeDialogActivity activity = Robolectric.setupActivity(SomeDialogActivity.class); 

     Dialog dialog = ShadowDialog.getLatestDialog(); 
     assertNotNull(dialog); 
     assertEquals(.... , ....) 
} 

答えて

3

は通常fragment状況として、それを扱う:

public class SomeDialogActivity extends FragmentActivity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     DialogFragment someDialogFragment = new SomeDialogFragment(); 
     someDialogFragment.show(getSupportFragmentManager(), "some_dialog"); 
    } 
} 

は、今私は、このダイアログが表示されているかどうかをテストするために、このような何かをしたかったです。したがって、フラグメントが表示されていることを確認するには、次のコードが必要です。

@Test 
public void dialogFragmentIsShownToTheUser() { 
    SomeDialogActivity activity = Robolectric.setupActivity(SomeDialogActivity.class); 

    DialogFragment dialogFragment = (DialogFragment) activity.getSupporFragmetManager() 
             .findFragmentByTag("some_dialog"); 
    assertNotNull(dialogFragment); 
} 
+0

問題は、いったんダイアログフラグが初期化されると、assertNotNullチェックに戻ることはありません。そのスタックと私はこのエラーを取得します。 android.content.res.Resources $ NotFoundException:リソースID#android.content.resで0x7f030023 \t '... android.content.res.Resources.loadXmlResourceParser(Resources.java) \tを見つけることができません。 Resources.getLayout android.view.LayoutInflater.inflate(LayoutInflater.java:394)で(Resources.java:852) \t android.view.LayoutInflater.inflateで\t(LayoutInflater.java:352) \t com.xxxで.yyy.zzz.fragments.MacDialogFragment.onCreateDialog(MacDialogFragment.java:36)..... ' –

関連する問題