Mam przypadek testowy, który wykorzystuje Instrumentation.ActivityMonitor w celu sprawdzenia, czy wysłano zamiar. Działa to dobrze, gdy test się powiedzie. Jeśli asercja nie powiedzie się, następny przypadek testowy zawiesza się w wywołaniu getActivity() w setUp().Aktywność Androida Niepowodzenie mechanizmu monitorowania Funkcja getActivity() nigdy nie zwraca
Czy mam zadzwonić do jakiejś metody czyszczenia?
Wygląda na to, że koncentruje się wokół uruchamiania działania, ale ActivityMonitor go nie łapie. Oznacza to, że filtr IntentFilter nie został uruchomiony. Test kończy się niepowodzeniem, ale nowe działanie nigdy nie jest zwalniane i wydaje się zakłócać następne wywołanie funkcji getActivity().
Ten problem jest similar to another question, ale to rozwiązanie (wywołanie super.tearDown()) nie naprawiło mojego problemu.
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
}
}
Czy rozwiązałeś ten problem? Mam to samo i nie wiem jak to naprawić :( – dexxtr