2016-06-08 5 views
5

Meine Aktivität hostet zwei Fragmente. In onCreate() werde ich bestimmen, welches Fragment angezeigt wird.Testaktivität und spezifisches Fragment mit Espresso

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_login); 
    handleIntent(getIntent()); 
} 


private void handleIntent(Intent intent) { 
    LogUtils.d(TAG, "handleIntent action=" + intent.getAction()); 
    if (MainIntentService.ACTION_TARGET_OPENER.equals(intent.getAction())) { 
     loadOpener(); 
    } else if (MainIntentService.ACTION_TARGET_LOGIN.equals(intent.getAction())) { 
     loadLogin(); 
    } else { 
     //noop 
    } 
} 

private void loadOpener() { 
    OpenerFragment openerFragment = OpenerFragment.newInstance(); 
    loadFragment(R.id.frame_fragment_container, openerFragment, true); 
} 

loadFragment() kümmern sich um Transaktions- und commiting Fragment ...

Das ist mein Test-Klasse ist:

@RunWith(AndroidJUnit4.class) 
@LargeTest 
public class LoginScreenTest { 


@Rule 
public ActivityTestRule<LoginActivity> mNotesActivityTestRule = 
     new ActivityTestRule<>(LoginActivity.class); 


@Test 
public void clickAddNoteButton_opensAddNoteUi() throws Exception { 
    onView(withId(R.id.button_login_submit)).perform(click()); 
    onView(withId(R.id.text_login)).check(matches(isDisplayed())); 
} 

}

Wie kann ich sagen, in der Testklasse welches Fragment soll angezeigt werden?

Antwort

8

Instantiate Ihre Regel nicht automatisch Aktivität zu starten:

@Rule 
    public ActivityTestRule<LoginActivity> mNotesActivityTestRule = 
     new ActivityTestRule<>(LoginActivity.class, false, false); 

Dann manuell Ihre Aktivitäten starten und in der Absicht übergeben, die Sie interessiert sind:

Intent intent = new Intent(); 
intent.setAction(MainIntentService.ACTION_TARGET_OPENER); 
mNotesActivityTestRule.launchActivity(intent);