Ho due applicazioni che interagiscono tra loro tramite intenti. Vorrei verificare che diciamo che App A chiama correttamente lo startActivity
per App B senza effettivamente avviare App B. Ho provato varie combinazioni di intending
e Espresso lancia ancora App B attraverso l'intento invece di spegnerlo. Ciò causa il fallimento dei test rimanenti in quanto l'interfaccia utente viene bloccata dall'app B. Qualche idea?durante la stubazione con 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();
}
}
AGGIORNAMENTO: Codice in materia di onClick
:
@OnClick(R.id.viewId)
public void startOtherActivity()
{
Intent intent = new Intent();
intent.setClassName("my.package", "the.other.class.name");
startActivity(intent);
finish();
}
Possiamo vedere il codice per la creazione di intenti nel onClick? E hai registrato i nomi dei pacchetti sugli intenti? Il tuo intendimento non sta catturando l'intento corretto – Blundell
Aggiunto il codice di esempio 'onClick'. – brwngrldev
Che versione di dispositivo/emu API stai usando? –