JUnit/テストアプリケーションの作成 の変更点

Androidのテストケースはテスト対象のアプリケーションと一緒にインストールする必要があります。
テストコードをアプリケーション本体に付属させたくない場合、テストクラスを別のアプリケーションとして作成することもできます。ここではEclipse用ADTプラグインを用いてテストを別アプリケーションとして実行する手順を解説します。
#BR
*テストプロジェクトの作成 [#a2ab3c9e]
Eclipseの「ファイル」→「新規」→「Android Project」から新規プロジェクトを作成します。
テストアプリケーションのマニフェストファイルは以下のようになります。

 <?xml version="1.0" encoding="utf-8"?>
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="org.sample.tests">
     <application>
         <uses-library android:name="android.test.runner" />
     </application>
     <instrumentation 
         android:name="android.test.InstrumentationTestRunner"
         android:targetPackage="org.sample"
         android:label="Tests for Sample Application"/>
 </manifest> 
org.sample.testsがテスト用アプリケーションのパッケージです。org.sampleをテスト対象パッケージとしてandroid:targetPackageに指定しています。
org.sample.testsがテスト用アプリケーションのパッケージです。org.sampleをテスト対象パッケージとして<instrumentation>のandroid:targetPackageに指定しています。
プロジェクトのプロパティを開き、Javaのビルドパスからテスト対象プロジェクトをビルドパスに追加します。
#BR
*TestSuiteの作成 [#w4a07ba5]
パッケージ配下のテストケースをすべて含むTestSuiteクラスを作成します。
android.test.suitebuilder.TestSuiteBuilderクラスを使って、パッケージ配下のテストケースをすべて含むTestSuiteクラスを作成します。

 package org.sample;
 
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
 import android.test.suitebuilder.TestSuiteBuilder;
 
 public class AllTests extends TestSuite {
 
     public static Test suite() {
         return new TestSuiteBuilder(AllTests.class)
                 .includeAllPackagesUnderHere()
                 .build();
     }
 }
#BR
*テストケースの作成 [#x10df208]
Activityに対するテストケースをテスト対象のクラスと同じパッケージに作成します。今回はActivityInstrumentationTestCase2の継承クラスとして作成しています。

 package org.sample.activity;
 
 import android.test.ActivityInstrumentationTestCase2;
 
 public class SampleActivityTest extends ActivityInstrumentationTestCase2<SampleActivity> {
 
 	public SampleActivityTest() {
 		super("org.sample", SampleActivity.class);
 	}
 	
 	@Override
 	protected void setUp() throws Exception {
 		super.setUp();
 	}
 	
        @MediumTest
 	public void test1() throws Exception {
 		assertTrue(true);
 	}
 
 }

テストケースのメソッド名はtestから始まるようにします。テストメソッドには@LargeTest,@MediumTest,@SmallTestのアノテーションをつけることができます。これらはテスト実行時にテストの水準を指定するためのもので、アノテーションがなくてもテストは実行可能です。
#BR
*テストの実行 [#c93c431a]
EclipseのパッケージエクスプローラからAllTestsクラスを選択し、右クリックメニューの「実行」→「Android JUnit Test」で実行します。テスト対象アプリケーションは、実行時に依存関係として自動的にインストールされます。

ActivityInstrumentationTestCase2を継承してテストケースを作った場合、試験は画面上で実際に操作の実行を伴って行われます。テストの実行結果はEclipseのJUnitビューに表示さます。

今後、パッケージ配下に新しくテストケースを追加した場合も、AllTestsクラスからすべて実行できます。任意のテストケースクラスを右クリックして個別に実行することも可能です。