Android JUnit TestはJUnitの上に構築されているため、JUnitテストのライフサイクルの基本的なルールに従います。
- テストケースのsetUp()メソッドを呼び出します
- テストメソッドを呼び出します
- テストケースのtearDown()メソッドを呼び出します
テストケースが完了すると、インストルメントされたアクティビティは迅速に強制終了されます。
理由は、 ActivityInstrumentationTestCase2のソースコードを参照してください。
@Override
protected void tearDown() throws Exception {
// Finish the Activity off (unless was never launched anyway)
Activity a = super.getActivity();
if (a != null) {
a.finish();
setActivity(null);
}
// Scrub out members - protects against memory leaks in the case where someone
// creates a non-static inner class (thus referencing the test case) and gives it to
// someone else to hold onto
scrubClass(ActivityInstrumentationTestCase2.class);
super.tearDown();
}
少なくとも次に何をしたいのかを決定し、次の数行をコーディングするために、終了時にそれを存続させる方法はありますか?
考えられる回避策は次のとおりです。
- super.tearDown();を呼び出さずに、AccountTestクラス(ActivityInstrumentationTestCase2クラスを拡張する)のteardown()メソッドを完全にオーバーライドします。
- カスタマイズされたActivityInstrumentationTestCase3クラス(ActivityTestCaseクラスを拡張する)を作成して、teardown()メソッドでの終了アクティビティを回避します。
どちらのアプローチでも、メモリリークを回避するために、teardown()メソッドを慎重に実装する必要があります。
お役に立てれば。