2013年8月26日月曜日

Android Studioでユニットテスト

Android Studioでユニットテストを動かしてみたのでメモ。


環境

・Mac OS X 10.8.4
・Android Studio (I/O Preview) 0.2.5

テスト対象Activityのコード

package com.example.app;

import android.os.Bundle;
import android.app.Activity;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }


    public String getMessage() {
        return "Hello";
    }

    public int add(int a, int b) {
        return a + b;
    }
}

テストの作成

まず、src/配下に「instrumentTest」ディレクトリを作成します。
さらに、instrumentTest/配下に「java」ディレクトリを作成します。
※ディレクトリ新規作成はショートカット[command] + [N]からが楽かなと思います。

instrumentTest/java/ディレクトリを作成したら、今度はパッケージを作成します。
パッケージ名は<テスト対象パッケージ名>.testとなります。

あとは、作成したパッケージにテストのクラスを作成します。
クラス名は<テスト対象クラス名> + Testとします。
今回の例ではMainActivityTestとなります。

テストコードはこんな感じです。

package com.example.app.test;

import android.test.ActivityInstrumentationTestCase2;

import com.example.app.MainActivity;

public class MainActivityTest extends ActivityInstrumentationTestCase2<MainActivity>{

    private MainActivity mActivity;

    public MainActivityTest() {
        super(MainActivity.class);
    }

    @Override
    protected void setUp() throws Exception {
        super.setUp();

        mActivity = getActivity();
    }

    public void testGetMessage() throws Exception {
        String expected = "Hello";
        String actual = mActivity.getMessage();
        assertEquals(expected, actual);
    }

    public void testAdd() throws Exception {
        int expected = 2;
        int actual = mActivity.add(1, 1);
        assertEquals(expected, actual);
    }
}

Run/Debug Configurationsの設定

ツールバーから[Edit Configurations...]を開きます。

左上の[+]ボタンから[Android Tests]を追加します。

[Name]:適宜名前を付けます。
[Module]:アプリのモジュールを設定します。
[Target Device]:適宜設定します。(今回はShow chooser dialogを選択)
上記の設定が完了したら、[OK]ボタンをクリックします。
これで準備完了です。

テストの実行

作成したテスト用のコンフィグレーションが選択された状態で、その右の[Run]ボタン(緑三角ボタン)をクリックするとテストが開始されます。


テストが完了すると、こんな感じのテスト結果画面が表示されます。

まとめ

今回はIDE上でユニットテストを行いましたが、コマンドラインからユニットテストを行うこともできます。
コマンドラインから実行した場合、HTMLのテスト結果レポートが作成されます。
その辺り、次回まとめてみようかなと思ってます。

0 件のコメント:

コメントを投稿