Ich habe zwei Anwendungen, die über Intents miteinander interagieren. Ich möchte überprüfen, ob App A korrekt die startActivity
für App B ruft, ohne tatsächlich starten App B. Ich habe verschiedene Kombinationen von intending
ausprobiert und Espresso startet noch App B durch die Absicht, anstatt nur auszudrücken. Dies führt dazu, dass die verbleibenden Tests fehlschlagen, da die Benutzeroberfläche von App B blockiert wird. Irgendwelche Ideen?Fehler beim Stubben mit Espresso
@RunWith(AndroidJUnit4.class)
@LargeTest
public class MyActivityUiIntentsTest
{
@Rule
public IntentsTestRule<MyActivity> activityRule =
new IntentsTestRule<>(MyActivity.class, true, false);
@Test
public void shouldStartOtherActivityWhenButtonClicked()
{
Intents.init();
intending(toPackage("my.package"))
.respondWith(new ActivityResult(Activity.RESULT_OK, null));
activityRule.launchActivity(new Intent());
onView(withId(R.id.viewId)).perform(click());
intended(hasComponent(hasShortClassName("the.other.class.name")));
Intents.release();
}
}
AKTUALISIERT:-Code für die onClick
:
@OnClick(R.id.viewId)
public void startOtherActivity()
{
Intent intent = new Intent();
intent.setClassName("my.package", "the.other.class.name");
startActivity(intent);
finish();
}
gestartet ist, können wir den Code für Intent Schöpfung im onClick sehen? Und haben Sie Paketnamen auf den Absichten angemeldet? Ie.e Ihre Absicht ist nicht die richtige Absicht zu fangen – Blundell
Hinzugefügt den 'onClick' Beispielcode. – brwngrldev
Auf welcher Device/Emu-API-Version laufen Sie? –