LoginSignup
4

More than 5 years have passed since last update.

[Android] InstrumentationTest 一歩目

Last updated at Posted at 2016-03-27

はじめに

最近Androidのテストを書くことになりそうなのでテストに慣れるためにもサンプルを実行しながら学習をすすめることにしました。
その備忘録になります。

InstrumentationTest(インストルメンテーションテスト)ってなに

「実機やエミュレータで実際に動かす」テストという意味ととると良さそうです。
Android会の議論を読むと参考になりました。
Instrumentation単語を調べてみたところ「計装と測定」が一番それらしい意味。

Googleのサンプルを動かしてみる

Google公式のサンプルがあるのでそれをまずは動かしてみます。

サンプルの概要

アプリ部分とテスト部分に分かれてます。

  • アプリの概要
    • スピナーで選択した値を保存して、Activityが再起動しても前回選択された位置設定するアプリ
  • テストの概要
    • アプリを起動してスピナーに値を設定、再起動して先ほどの値がスピナーに保存されいるか確認を2回繰り返す、間違っていればエラー

Sampleを開く

サンプルを早速起動してみます。
1. AndroidStudioからInport an Android code sampleを選択
スクリーンショット
2. Activity Instrumentationを選択して開く
スクリーンショット
3. まずは普通にRunしてアプリが動くことを確かめる
実機をつなぐかエミュレータを立ち上げてRunしてください。
コード見て触ってみて動作を確認します。
スクリーンショット

AndroidStudioからテスト実行

1 ビルドの選択のEdit Configurationsを選択
スクリーンショット 2016-03-26 18.25.03.png

2 左上の+を押しAndroidTestsを選択
スクリーンショット 2016-03-26 18.25.20.png

3 Nameを適当に変えて、ModuleをApplicationに選択→ok
スクリーンショット 2016-03-26 18.26.10.png

4 実行
スクリーンショット 2016-03-27 16.22.55.png

5 確認
Run画面にSuccessがでたら成功
スクリーンショット 2016-03-27 16.24.51.png

コンソールからテスト実行

コンソールからもプロジェクトの直下で以下のコマンドを入力することでテスト実行できます。

./gradlew connectedAndroidTest

テストコードを見てみる

ActivityInstrumentationTestCase2クラスを継承
Activity activity = getActivity(); でMainActivityの起動作成
・ Activityからspinnerを取得しUIスレッドでフォーカスをあてて、選択状態を設定する。

activity.runOnUiThread(new Runnable() {
            @Override
            public void run() {
                spinner1.requestFocus();
                spinner1.setSelection(TEST_SPINNER_POSITION_1);
            }
        });

activity.finish(); setActivity(null);でActivityの終了

assertEquals()で取得した値と想定した値が同じか判定 ※assertEqualsはJunitのメソッドです。

テストを失敗するようにしてみる

SampleTestsクラスの94行目

assertEquals(TEST_SPINNER_POSITION_1, currentPosition);

assertEquals(MainActivity.WEATHER_RAIN, currentPosition);

等に変えて実行し
junit.framework.AssertionFailedErrorがでることを確認

以上です。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4