AndroidアプリのUIテスト-InstrumentationTestCase編-
複数のActivityに跨る画面遷移のテストを調べて、サンプルを作ってみました。
サンプルのAndroidプロジェクトとテストプロジェクトは以下に置きました。
サンプルAndroidアプリ uiTestSample
サンプルテスト uiTestSample-test
参考にしたのは以下のページ How do you test an Android application across multiple Activities?
※:参考ページでは、JUnit4を使っていますが、ここではJUnit3を使っているため一部違っています。
サンプルアプリの動作について
このサンプルでは、アプリの起動後の画面にボタンが表示され、そのボタンをクリックすると別画面に遷移します。
起動後の画面
ボタンクリックで遷移後の画面
テストの概要
このサンプルでは、アプリ起動後の画面のTextViewの内容を確認。ボタン1のクリックをエミュレートし、画面遷移後の画面のTextViewの内容を確認しています。
InstrumentationTestCase
InstrumentationTestCaseを継承したクラスを作成します。 getInstrumentation()を使うことで、現在有効になってるアクティビティを捕捉し、TouchUtilsでユーザ操作をエミュレートします。
テストの流れ
捕捉するインテント情報を設定
存在するInstrumentation.ActivityMonitorがヒットするまで待ちます。タイムアウト時間を設定。
Viewを取得して、初期状態を確認。
ボタンのクリックをエミュレート。
再度Activityを取得。
画面遷移後の表示を確認。
まとめ
TouchUtilsを使えば、このほかにもドラッグ、スクロール、長押し等色々エミュレートでき、UIスレッドを意識しないで書けるので、アプリのハッピーパスのテストくらいであれば簡単に書けそうです。
Link
Latest post:
- OpenWhiskのScala sbtプロジェクトのgiter8テンプレートを作った
- OpenWhisk+Scalaで作るServerless Architectureとっかかり
- BluemixにPlayframeworkアプリケーションをデプロイする
- sbt、Giter8を統合するってよ
- Scala 2.12.0でSAM型