Tengo un caso de prueba que usa Instrumentation.ActivityMonitor para comprobar si se envió un Intent. Esto funciona bien cuando la prueba tiene éxito. Si la aserción falla, el siguiente caso de prueba se bloquea en la llamada getActivity() en setUp().Android ActivityMonitor failure causa que getActivity() nunca devuelva
¿Se supone que debo hacer una llamada con algún método para limpiar?
Parece que gira en torno al lanzamiento de una actividad, pero el ActivityMonitor no lo detecta. Es decir, IntentFilter no se activó. La prueba falla pero la nueva Actividad nunca se descarta y parece interferir con la próxima llamada a getActivity().
Este problema es similar to another question, pero esta solución (llamar a super.tearDown()) no solucionó mi problema.
public class SimpleActivityTest
extends ActivityInstrumentationTestCase2<SimpleActivity> {
private SimpleActivity activity;
@Override
protected void setUp() throws Exception {
super.setUp();
this.getInstrumentation().setInTouchMode(false);
Intent intent = new Intent();
intent.putExtra("DATA_ITEM_1", 1);
intent.putExtra("DATA_ITEM_2", 2);
this.setActivityIntent(intent);
this.activity = getActivity(); // this call hangs on second test
}
public void testOtherActivityCalled() {
IntentFilter ifilter = new IntentFilter(Intent.ACTION_VIEW);
ifilter.addDataScheme("http");
ifilter.addDataAuthority("some.domain.com", null);
ifilter.addDataPath("foobar", PatternMatcher.PATTERN_PREFIX);
ActivityMonitor activityMonitor = getInstrumentation().addMonitor(
ifilter, null, false);
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
// launch other activity somehow
}
});
getInstrumentation().waitForIdleSync();
Activity otherActivity = activityMonitor.waitForActivityWithTimeout(2000);
assertNotNull(otherActivity);
otherActivity.finish();
}
public void testSomethingElse() {
// This code will never run because getActivity() in setUp() will
// never return
}
}
¿resolvió este problema? Tengo lo mismo, y no sé cómo solucionarlo :( – dexxtr