sto cercando di testare il mio comportamento app con il caffè 2.2Come verificare IntentService iniziare
sull'attività principale, quando il pulsante premuto sia il servizio che un'altra attività viene avviato:
public class MainActivity extends Activity {
public void onButtonClicked() {
startActivity(SecondActivity.getStartIntent());
startService(MyIntentService.getStartIntent());
}
}
I' se i componenti vengono destinati iniziato m test:
public class MainActivityTest {
@Rule
public final IntentsTestRule<MainActivity> intentsRule = new IntentsTestRule<>(MainActivity.class, true);
@Test
public void shouldStartServiceOnButtonClicked() {
onView(withId(R.id.button)).perform(click());
intended(hasComponent(hasClassName(SecondActivity.class.getName())));
intended(hasComponent(hasClassName(MyIntentService.class.getName())));
}
}
ma sto ottenendo errore:
Caused by: junit.framework.AssertionFailedError: Wanted to match 1 intents. Actually matched 0 intents.
IntentMatcher: has component: has component with: class name: is "com.example.MyIntentService" package name: an instance of java.lang.String short class name: an instance of java.lang.String
Matched intents:[]
Recorded intents:
-Intent { cmp=com.example/.SecondActivity (has extras) } handling packages:[[com.example]], extras:[Bundle[...]])
at junit.framework.Assert.fail(Assert.java:50)
L'avvio di SecondActivity è registrato. Perché l'avvio del mio IntentService non è registrato (ho controllato che sia avviato)?
Come ho già scritto, ho verificato che il servizio venga avviato durante il runtime di test. Inoltre, nel mio test, verifica che l'intento sia registrato, non l'inizio del servizio. –