複数のActivityに跨る画面遷移のテストを調べて、サンプルを作ってみました。

サンプルのAndroidプロジェクトとテストプロジェクトは以下に置きました。

サンプルAndroidアプリ uiTestSample

サンプルテスト uiTestSample-test

参考にしたのは以下のページ How do you test an Android application across multiple Activities?

※:参考ページでは、JUnit4を使っていますが、ここではJUnit3を使っているため一部違っています。


サンプルアプリの動作について

このサンプルでは、アプリの起動後の画面にボタンが表示され、そのボタンをクリックすると別画面に遷移します。

起動後の画面

uiTestSample-main

ボタンクリックで遷移後の画面

uiTestSample-transited


テストの概要

このサンプルでは、アプリ起動後の画面のTextViewの内容を確認。ボタン1のクリックをエミュレートし、画面遷移後の画面のTextViewの内容を確認しています。

InstrumentationTestCase

InstrumentationTestCaseを継承したクラスを作成します。 getInstrumentation()を使うことで、現在有効になってるアクティビティを捕捉し、TouchUtilsでユーザ操作をエミュレートします。

テストの流れ

捕捉するインテント情報を設定

存在するInstrumentation.ActivityMonitorがヒットするまで待ちます。タイムアウト時間を設定。

Viewを取得して、初期状態を確認。

ボタンのクリックをエミュレート。

再度Activityを取得。

画面遷移後の表示を確認。

まとめ

TouchUtilsを使えば、このほかにもドラッグ、スクロール、長押し等色々エミュレートでき、UIスレッドを意識しないで書けるので、アプリのハッピーパスのテストくらいであれば簡単に書けそうです。