In Espresso Klasse:Espresso.pressBack() ruft nicht onBackPressed()
@Rule
public IntentsTestRule<MainActivity> mIntentsRule = new IntentsTestRule<>(
MainActivity.class);
@Test
public void test_backButton(){
onView(withId(R.id.NEXT_ACTIVITY)).perform(scrollTo(), click());
Espresso.pressBack();
}
In Aktivität:
@Override
public void onBackPressed() {
Log.d("TEST_pressBack", "inside onBackPressed()");
do_something();
super.onBackPressed();
}
@Override
public void finish() {
Log.d("TEST_pressBack", "inside finish()");
super.finish();
}
Wenn ich den Espresso-Test-Methode aufrufen, die Ausführung direkt zu finish()
geht.
Wenn ich die Zurück-Taste (mit der Hand) drücke in den Activity
die Ausführung geht zunächst in onBackPressed()
und dann zu finish()
. Wie kann ich die Funktion onBackPressed()
mit Espresso testen? Danke!
EDIT: Es ist mein Fehler. Das Problem war, dass in der Aktivität, in der ich pressBack aufrufen wollte, die Bildschirmtastatur geöffnet wurde. Wenn die Soft-Tastatur geöffnet ist, ruft die Drucktaste kein BackPressed auf, sondern bewirkt, dass die Tastatur nicht angezeigt wird. Ich habe versucht, mit zwei pressBack() in einer Reihe und es funktionierte richtig:
@Rule
public IntentsTestRule<MainActivity> mIntentsRule = new IntentsTestRule<>(
MainActivity.class);
@Test
public void test_backButton(){
onView(withId(R.id.NEXT_ACTIVITY)).perform(scrollTo(), click());
Espresso.pressBack();
//The extra pressBack()
Espresso.pressBack();
}
Sie verwendet haben könnte Espresso.closeSoftKeyboard() –