1

Hiiiボタンを押した後にアクティビティを有効にして、そのアクティビティの次のテストケースを表示できるようにするテストメソッドをテストしていますが、残念ながら、テストケースの実行後にアクティビティが強制終了されます。保持する方法はありますかアクティビティが生きています。コード行がある場合はお知らせください。

4

2 に答える 2

1

ソース コードを少し調べたところtearDown()、ActivityInstrumentationTestCase2 に実装されているメソッドが、現在のアクティビティに対して を呼び出すことがわかりましたfinish()。したがって、このメソッドの実装で Activity を明示的に finish() しなくても、 を呼び出すときに完了しsuperます。ただし、ソースコードのドキュメントによると、非静的内部クラスがある場合、tearDown() でスーパーへの呼び出しを削除するとメモリリークが発生する可能性があり、おそらくあなたのケースにとってより重要なのは、実行中のアクティビティがまだ一度強制終了されているように見えることです。テストが完了しました。tearDown() の実装が空の場合でも、テスト中のアクティビティは実行の最後に終了するように見えます。今のところ、これを回避する方法はわかりません。

@Paul Harris の回答に対するコメントに基づく代替手段として、Robotium には、何かが起こるのを待つことができる多くの方法があります。ボタンのクリックが何らかのアクションを実行している間、Robotium が一時停止するように、タイムアウトを引数として取ることができるwaitForText()またはを調べることができます。waitForView()お役に立てれば!

于 2013-01-31T15:26:59.443 に答える
1

私はあなたのコードを見ないと確信が持てませんが、テストケース、または setup() および tearDown() メソッドのいずれかで、あなたが持っているすべてのアクティビティを閉じる finishOpenedActivities() などのメソッドを呼び出す必要があると推測しています開いた。この行を削除すると、アクティビティは開いたままになります。

通常、テスト ケースをクリーンな状態から開始することがベスト プラクティスであると述べました。これは、順序付けに依存するテスト ケースを使用すると、1 つが失敗すると、その機能が機能していても他のすべてが失敗することを意味し、さらに少しハックなことを行う必要があるためです。それらをすべて必要な順序で実行するようにします。

于 2013-01-31T07:44:31.413 に答える