テストコードの作成について¶
単体テストに関して、JUnitを使ってAndroidの自動テストをするというものであります。
一つプロジェクトを製造した後で、単体テストを実行する必要であります。
単体テストを実行されるコーディングは、品質を向上されることができます。
以下は、JUnitによるAndroidプログラムのテスト検証について記述します。
テストコードの実行手順¶
- テストしたいプロジェクトのバーションを確定する。
- このバーションのコードにより、テストコードを初回作成する。
- テストコードにとって、テストしたいプロジェクトが変更して、テストコードも変更する必要がある。
- テストコードの実行結果により、問題点を発生される場合、バグチケットを作成する必要がある。

JUnitについて¶
Javaによって開発されたプログラムに対して、単体テストを行うためのアプリケーションフレームワーク。これにより、単体テスト検証を行います。
Androidにおいて、JUnitを用いたテストに関しては以下を参照のこと。
公式
上記の翻訳
テストプロジェクトの準備について¶
- Project → New Project → Android Test Projectを選択し、「Next」を押します。


- Projectnameを入力し、「Next」を押します。
Projectname命名規則:テストされるプロジェクトのプロジェクト名+"-Test"。
例:CasioFinderのテストプロジェクト→CasioFinder-Test。

- Test Targetについて、「An existing Android project」をチェックし、検証したいプログラムを選択し、「Next」を押します。

- BuildTargetを選択し、Finishを押します。

- テストプロジェクトが新規されし、Junit4のライブラリーを追加します。




Junit4のライブラリーが追加された後で、Junit4のライブラリーをチェックします。

ActivityのJUnitTestCaseの作成について¶
ActivityのJUnitTestCaseの作成についてページに参照してください。
コンポーネントのJUnitTestCaseの作成について¶
コンポーネントのJUnitTestCaseの作成についてページに参照してください。
テストケースについて¶
テストケースは全てメソッドで表現するが、決まりごとを以下に列挙します。
- テストを始める前に処理を行う場合は(データベースのオープン、変数の初期化等)はsetUp( )メソッドをオーバーライドして、そこに処理を書きます。
- テスト終了後の処理(データベースのクローズ、メモリ解放等)はteardown( )メソッドをオーバーライドして、そこに処理を書きます。
- テストケースは必ず「test」から始まるメソッド名で書きます。
- JUnitで用意されているメソッドを以下に示します。
| メソッド | 説明 |
|---|---|
| assertEquals(arg1, arg2) | arg1とarg2が同じ値かどうか判別する。違う場合はFailure(失敗)になる。 |
| assertEquals(msg, arg1, arg2) | 上記と同様に振舞う。値が違う場合はメッセージとしてmsgを表示する。 |
| assertTrue(boolean) | 引数がtrueかどうか判別する。falseの場合はFailure(失敗)になる。 |
| assertTrue(String, boolean) | 上記と同様に振舞う。falseの場合はメッセージとしてStringの値を表示する。 |
| assertFalse(boolean) | 引数がfalseかどうか判別する。trueの場合はFailure(失敗)になる。 |
| assertFalse(String, boolean) | 上記と同様に振舞う。trueの場合はメッセージとしてStringの値を表示する。 |
| assertNotNull(Object) | 引数がNullでないか判別する。Nullだった場合はFailure(失敗)になる。 |
| assertNotNull(String, Object) | 上記と同様に振舞う。Nullだった場合はメッセージとしてStringの値を表示する。 |
| assertNull(Object) | 引数がNullかどうか判別する。Nullでなかった場合はFailure(失敗)になる。 |
| assertNull(String, Object) | 上記と同様に振舞う。Nullでなかった場合はメッセージとしてStringの値を表示する。 |
| assertSame(Object1, Object2) | Object1とObject2が同じオブジェクトを参照しているかどうか判別する。同じオブジェクトでなかった場合はFailure(失敗)になる。 |
| assertSame(String, Object1, Object2) | 上記と同様に振舞う。同じオブジェクトでなかった場合はメッセージとしてStringの値を表示する。 |
| assertNotSame(Object1, Object2) | Object1とObject2が同じオブジェクトを参照していないかどうか判別する。同じオブジェクトだった場合はFailure(失敗)になる。 |
| assertNotSame(String, Object1, Object2) | 上記と同様に振舞う。同じオブジェクトだった場合はメッセージとしてStringの値を表示する。 |
| fail() | 強制的にFailure(失敗)になる。 |
| fail(String) | 上記と同様に振舞う。Failure(失敗)の際、メッセージとしてStringの値を表示する。 |
テストの実行¶
テストを実行する前に以下の操作を行うこと。
通常、Androidにおいては、Junitのテストプロジェクトを実行してもテスト結果はxmlファイルで出力されません。
そこで、出力されるようにするために、android-junit-reportを用います。(Jenkinsでのレポート用)
-
テストプロジェクトのlibs/下に上記URLからダウンロードした 【android-junit-report-1.5.8.jar】を格納します。
-
Manifest.xmlのinstrumentationタグのandroid:nameを 【”android.test.InstrumentationTestRunner”】から 【”com.zutubi.android.junitreport.JUnitReportTestRunner”】 に変更します。
-
テストプロジェクトフォルダ直下に以下を記述した "custom_rules.xml"を追加します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
<?xml version="1.0" encoding="utf-8"?> <project name="custom"> <property name="reports.dir" value="bin/reports" /> <property name="tested.project.app.package" value="(テスト対象のパッケージ名)" /> <target name="fetch-test-report"> <echo>Downloading XML test report...</echo> <mkdir dir="${reports.dir}" /> <exec executable="${adb}" failonerror="true"> <arg line="${adb.device.arg}" /> <arg value="pull" /> <arg value="/data/data/${tested.project.app.package}/files/junit-report.xml" /> <arg value="${reports.dir}/junit-report.xml" /> </exec> </target> <target name="test-and-fetch" depends="debug,install,test,fetch-test-report" /> </project>
-
eclipse上でテストを実行します テストプロジェクトで右クリック→「Run As」→「Run Configurations」をクリック

Android Junit Testのテストプロジェクトを選択し、Instrumentation runnerを【com.zutubi.android.junitreport.JUnitReportTestRunner】を選択します

テストは、メニューの「Run」→「Run As」→「Android JUnit Test」を選択します。
エミュレータ(or実機)にテスト対象アプリとテストアプリがインストールされ、テストが行われます。
その結果は以下のように、成功だと緑色、失敗だと赤色で表示されます。

その他¶
- テストメソッドの実行順は不定なので、注意すること。
- 上記Activity,コンポーネント以外に、Service単体のテスト、Provider単体のテストも可能で、リファレンスを参照のこと。
by 許燕