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
Unsere Ideen
Weitere Blogs
Contact
Let’s discuss how we can support your journey.



