Androidアプリのユニットテスト

Androidユニットテストには、Android SDKに組み込まれているAndroid Instrumentationという仕組みを使用する。

細かいことは日本アンドロイドの会にある資料に任せるとして、ここでは実装手順などを書いておこう。

1. テストアプリのプロジェクトを作成

パッケージ名とかは、まぁ適当に。

2. ビルドパスにテスト対象アプリのプロジェクトを追加する

  1. パッケージ・エクスプローラのMediaPlayerTests を右クリックし、“ビルド・パス”  “ビルド・パスの構成” を選択
  2. “プロジェクト” を選択し、 “追加”ボタンを押す
  3. テスト対象のプロジェクトのチェックボックスにチェックを入れ、OKボタンを押す

3. AndroidManifest.xmlを書き換える

<application>
    <uses-library android:name="android.test.runner" />
</application>
<instrumentation
    android:name="android.test.InstrumentationTestRunner"
    android:targetPackage="パッケージ名"
    android:label="アプリケーション名" />

4. テストケース全体実行クラスを作成する

  1. TestSuiteクラスを継承してAllTestsクラスを生成する。
  2. 下記関数をAllTestsクラス内に定義する。
public static Test suite() {
    return new TestSuiteBuilder(AllTests.class)
                .includeAllPackagesUnderHere()
                .build();
}

5. テストケースクラスを作成する

  1. テスト対象のクラスに合ったテストケースクラスを生成する。
    • ActivityInstrumentaionTestCase
    • ActivityUnitTestCase
    • SingleLaunchActivityTestCase
    • ProviderTestCase
    • ServiceTestCase
    • ApplicationTestCase
    • 他AndroidTestCaseなど
  2. setUp( ) と tearDown( ) をオーバーライドし、テストの前処理と後処理を記述する。(必要なければ、オーバーライドしなくともよい)
  3. テストケースを記述するメンバ関数を作成する。以下の条件を満たしている関数が、自動的に実行される。
    • 公開関数である (public)
    • 関数名の先頭が”test”
    • 引数がvoid
    • 戻り値がvoid
  4. 判定はassertTrue, assertEqualsなど、Assertで定義されている関数を使用する

6. ビルドして実行する

DevTools → Instrumentations に、AndroidManifest.xmlで設定したラベル名で表示される。
実行結果はLogCatで参照する。