前のテストがアクティビティを起動した後に失敗した単体テストのヘルプを探しています。ちょっとわからないのは、次のテストでハングが発生するということです。起動アクティビティのテストは正しく完了します。
これは、合格したように見えるインテントでアクティビティを開始する私のテストです
public final void testStartsIntent() {
Instrumentation inst = getInstrumentation();
Intent intent = new Intent(mActivity,uk.co.example.activity.TargetActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
ActivityMonitor monitor = inst.addMonitor(uk.co.example.activity.TargetActivity.class.getName(), null, false);
inst.startActivitySync(intent);
monitor.waitForActivityWithTimeout(2000);
assertEquals(1, monitor.getHits());
Activity randomActivity = monitor.getLastActivity();
inst.removeMonitor(monitor);
}
大丈夫そうですよね?
次のテストが実行されるとすぐに
public final void testPreconditions(){
assertNotNull(mActivity);
}
プロセスを終了するまでハングします。Teardown() で mActivity を明示的に null に設定しようとしましたが、これは問題ではありません。これが私のセットアップと分解です
protected void setUp() throws Exception {
super.setUp();
mActivity = getActivity();
mResultList = (ListView) mActivity.findViewById(android.R.id.list);
mTextField = (TextView) mActivity.findViewById(uk.co.example.R.id.txtResultViewHeader);
String items[] = {"1","2"};
mAdapter = new ArrayAdapter<String>(mActivity,android.R.id.list,items);
}
protected void tearDown() throws Exception {
super.tearDown();
}
後続のテストがハングする理由は誰にも分かります - おそらく mActivity は正しい状態ではありませんが、エラーではなくハングするのはなぜですか? 追加する価値があるのは、testStartIntent テストを削除すると、testPreconditions() テストが正常に実行されることです...
ありがとう。