Instrumentation.ActivityMonitorを使用してインテントが送信されたかどうかを確認するテストケースがあります。テストが成功すると、これはうまく動作します。アサーションに失敗した場合、次のテストケースはsetUp()のgetActivity()呼び出しでハングします。Android ActivityMonitorの失敗によりgetActivity()が返されない
私はきれいにするいくつかのメソッドを呼び出すことになっていますか?
アクティビティの起動を中心にしているように見えますが、ActivityMonitorはそれをキャッチしません。つまり、IntentFilterはトリガーされませんでした。テストは失敗しますが、新しいActivityは決して解消されず、次のgetActivity()呼び出しを妨害するようです。
この問題はsimilar to another questionですが、この解決方法(super.tearDown()を呼び出す)で問題が解決されませんでした。
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
}
}
この問題を解決しましたか?私は同じで、それを修正する方法がわからない:( – dexxtr