アプリのライフサイクルとその破棄と再作成をテストする必要があります。キーボードがスライドイン/アウト (または回転) すると、アプリが破棄されて再作成されるためです。これを行うときは、メモリリークもテストする必要があります。
チュートリアルで見たhttp://developer.android.com/tools/testing/activity_test.html#StateManagementTests
Terminate the activity and restart it:
mActivity.finish();
mActivity = this.getActivity();
ただし、これは非常に単純化されています。私のロギングは、finish() を呼び出すと、別のスレッド ID を持つバックグラウンド スレッドが生成され、onPause()、finish()、onStop()、および onDestroy() が呼び出されることを示しているようです。getInstrumentation().waitForIdleSync();
そのバックグラウンド スレッドが完了するまで待機しようとしましたが、期待値をテストすると競合状態が発生します。
それだけでなく、getActivity() を使用して (最初の競合状態が発生しないか、アサートをコメントアウトしたときに) アクティビティを再作成すると、ちょうど完了したのとまったく同じオブジェクトが返されます! this
onXXX...() メソッドにログインしているのでわかります。
これは、常に新しい Activity オブジェクトを作成する方向回転/キーボード スライド アプリのライフサイクルとは異なります。
では、この破壊/生まれ変わりのシナリオをテストするにはどうすればよいでしょうか?