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のテスト結果レポートが作成されます。
その辺り、次回まとめてみようかなと思ってます。