真 もわ爛漫

しゃーら、しゃーらしゃーら

Androidでのユニットテスト。超初級編

今回はこの UsefulUtilities.java の toUpper() をテストする。

メニューから"File -> New -> Project..." と辿り、Androidカテゴリーの中の"Android Test Project"を選ぶ。

Targetは何でもよいが今回はGoogle APIs + 2.0 を選んでおく。ここで "Test Target" に "An existing Android project" を選び、右の "Browse..." を選択する

今回は ExampleForTest プロジェクトに対するテストである。そのプロジェクトを選択する

プロジェクト名などが自動的に補完された。これは変更しても良い。今回はこのまま "Finish" を押す。

作られた直後は何のJavaファイルも作成されない。任意のファイル名でテスト用のJavaファイルを作ってよい。

画像が非常に小さくて申し訳ない。このように書いてある

package com.android.example.examplefortest.test;

public class ExampleTests extends TestCase {

}

この状態ではTestCaseがimportされていない。ここで"Ctrl+Shift+O"

importが補完された。

package com.android.example.examplefortest.test;

import junit.framework.TestCase;

public class ExampleTests extends TestCase {

}

見ての通り、TestCaseはAndroid特有のテストではなくJUnitのクラスである。Androidフレームワークと関係ないクラスやメソッドのテストではJUnitの枠組みを使うのである。

JUnit では "test" で始まるpublicメソッドをテストケースと認識する。

package com.android.example.examplefortest.test;

import com.android.example.examplefortest.UsefulUtilities;

import junit.framework.TestCase;

public class ExampleTests extends TestCase {
    public void testToUpper() {
        assertEquals("INPUT", UsefulUtilities.toUpper("input"));
    }
}

慣習として「期待する戻り値を左、実際の結果を右」に書く。

プロジェクト名のExampleForTestTestを右クリックし、"Run As -> "Android JUnit Test" を選択する。

ここでテストを実行させるデバイスまたはシミュレータを指定するダイアログが出るかもしれない。適切なターゲットを設定すること。

しばらくするとユニットテストが実行される。今回は UsefulUtilities の toUpper() でエラーが出ていることが分かる。思ったほど useful ではないようだ。

すべてのユニットテストに成功した場合は緑色のバーとなる。今回の例で成功するためにはUsefulUtilitiesをどう変更すれば良いかは課題とする。

おまけ

今回の例とは特別関係ないが、このような当たり前のようなユニットテストが必要であるということを示すため、Androidフレームワークに付随しているSpannableStringBuilderをテストしてみよう。AndroidにおけるSpanと呼ばれる概念について考えなければ、機能的にはJavaのStringBuilderと同じような動きをする、ように思える。

さて、testBonus() はどう動くだろうか?