8

ActivityInstrumentationTestCase2を使用して、ログインアクティビティに対して複数のテストケースを実行しようとしています。最初のテストケースはログインの成功をテストします。これにより、アクティビティはstartActivity(Intent intent)を呼び出して次のアクティビティを起動します。これで、テストしようとしているアクティビティの上に別のアクティビティがあります。最初のテストケースに合格し、2番目のテストケースが開始されます。ただし、2番目のテストケースによって呼び出されると、getActivity()で永久にハングします。

ログインアクティビティのコードに移動し、startActivity(Intent intent)を呼び出す部分をコメントアウトすると、両方のテストケースが正常に実行されます。

私はすでにいくつかのことを試しました。Intent.FLAG_ACTIVITY_CLEAR_TOPを使用してアクティビティスタックをクリアしました。この場合、最上位のアクティビティが閉じられ、ログインアクティビティが表示されますが、2番目のテストケースが開始されると、getActivity()でスタックします。

sendKeys(KeyEvent.KEYCODE_BACK)も試しましたが、効果はありません。

これを克服するために私は何ができますか?ありがとう!

4

2 に答える 2

4
getInstrumentation().addMonitor(NextActivity.class.getName(), null, true);

トリックをしました。最後のパラメーターは、アクティビティの起動をブロックするかどうかを示すフラグであることに注意してください。true に設定すると問題が解決しました。

ドキュメントへのリンク

于 2012-07-30T21:42:44.970 に答える
0

私の場合、各ケースの後にアクティビティを閉じるだけです:

public void tearDown() {
    // here goes other code to be executed after each test case
    getActivity().finish();
}
于 2018-08-16T15:12:30.927 に答える