Blog

Verwendung von Intent-Extras mit Espresso-Regeln

Cristiana

Cristiana

Aktualisiert Oktober 22, 2025
2 Minuten
Die android-test-support-Bibliothek hat die Basisklasse ActivityInstrumentationTestCase2 zugunsten eines saubereren Ansatzes mit JUnit4-Regeln aufgegeben. Das ist schön und sauber, aber es fehlt eine Dokumentation darüber, wie Sie vorgehen müssen, wenn Ihre Activity zusätzliche Intent-Elemente benötigt, um ausgeführt zu werden. Dieser Beitrag zeigt Ihnen, wie Sie das bewerkstelligen können. Hier ist der einfachste Fall, bei dem alle Aktivitäten mit der Aktion "android.intent.action.MAIN" gestartet werden: [sourcecode language="java" collapse="false"] @SmallTest @RunWith(AndroidJUnit4.class) public class MainActivityTest { @Rule public ActivityTestRule<MainActivity> mActivityRule = new ActivityTestRule<>(MainActivity.class); @Test public void someTest() { /* Ihre Aktivität ist initialisiert und einsatzbereit. */ } } [/sourcecode] So sorgen Sie dafür, dass alle Methoden in Ihrer Testklasse denselben Intent verwenden, mit Extras: [sourcecode language="java" collapse="false"] @SmallTest @RunWith(AndroidJUnit4.class) public class MainActivityTest { @Regel public ActivityTestRule<MainActivity> mActivityRule = new ActivityTestRule<MainActivity>(MainActivity.class) { @Override protected Intent getActivityIntent() { Kontext targetContext = InstrumentationRegistry.getInstrumentation() .getTargetContext(); Intent result = new Intent(targetContext, MainActivity.class); result.putExtra("Name", "Wert"); Ergebnis zurückgeben; } }; @Test public void someTest() { /* Ihre Aktivität ist initialisiert und einsatzbereit. */ } } [/sourcecode] Wenn Sie möchten, dass jede Testmethode ihren eigenen Satz an Extras bereitstellt, können Sie auch das tun: [sourcecode language="java" collapse="false"] @SmallTest @RunWith(AndroidJUnit4.class) public class MainActivityTest { @Rule public ActivityTestRule<MainActivity> mActivityRule = new ActivityTestRule<>(MainActivity.class, true, false); @Test public void someTest() { Context targetContext = InstrumentationRegistry.getInstrumentation() .getTargetContext(); Intent intent = new Intent(targetContext, MainActivity.class); intent.putExtra("Name", "Value"); mActivityRule.launchActivity(intent); /* Ihre Aktivität ist initialisiert und einsatzbereit. */ } } [/sourcecode] Ich habe ein vollständiges, lauffähiges Beispiel auf GitHub unter barend/android-espresso-intent-sample eingestellt.

Verfasst von

Cristiana

Some bio goes here

Contact

Let’s discuss how we can support your journey.