Android Junit Test

android-junit.png

取り入れ方

ある関数に

@Test

と書くと、まず赤い波線でエラーになるのでマウスオーバーすると

Add JUnit4 library to the build path

と出るのでクリックします
そうするとプロジェクトにJUnit4が追加されます
junit4.png
テストを実行する時は

Run As > Android JUnit Test

を実行します
まずこんなエラーが出ました

プロジェクト名 does not specify a android.test.InstrumentationTestRunner instrumentation or does not declare uses-library android.test.runner in its AndroidManifest.xml

AndroidManifest.xmlにinstrumentationを追加

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.android.example.spinner.test"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
 
    <uses-library android:name="android.test.runner" />
    </application>
    <uses-sdk android:minSdkVersion="3" />
    <instrumentation
        android:targetPackage="com.android.example.spinner"
        android:name="android.test.InstrumentationTestRunner" />
</manifest>

大事なのはこの2カ所

<uses-library android:name="android.test.runner" />

<instrumentation
android:targetPackage="com.android.example.spinner"
android:name="android.test.InstrumentationTestRunner" />

Run Android Junitがうまくいくと次のようなメッセージがコンソールに出ます
Performing android.test.InstrumentationTestRunner JUnit launch

Automatic Target Mode: using device ...
Uploading アプリ名.apk onto device ...

> Activityについてのテストはテストクラスで” ActivityInstrumentationTestCase2<T>”を継承し、ユーティリティクラスなどは”AndroidTestCase”を継承します。

最小限のテストクラスを作るには

わざわざ別プロジェクトを作らなくても、JUnitテストをやろうと思えば出来ます
やっぱりテスト対象のActivityとは別にもう一つクラスを作る必要はあります。

package miffy.sora;
import org.junit.Test;
import android.test.ActivityInstrumentationTestCase2;
 
public class MiffyTestMain extends ActivityInstrumentationTestCase2<MiffyActivity> {
    public MiffyTestMain() {
        super(MiffyActivity.class);//テスト対象のActivityクラス
    }
    @Test
    public void test() {
        Log.d("miffy", "テストだよ");
    }
}

サポートサイト Wikidot.com