せっかくなので、Junitを使ってテストを書こうと思ったのですが、全然情報がありません。
他のみんなはJunitを使ったテストを作成しないで、リリースしているのでしょうか???
ちなみに、私が仕事で携わった(っている)Androidアプリケーションプロジェクトでは、Junitテストは通していませんw
まあ、そんなわけで、ブログ上に情報を逐次UPしていきたいと思います。
こういった知識はみなさんで共有しましょう。
iPhoneに勝つために!W
では、まず第一回目です。
- 手順
- Eclipseを使ってTest用のアプリケーションを作成します
- ファイル → 新規 → Android Test Projectを選択します
- Test Project Name欄に作成したいテストアプリケーション名を入力します。アプリケーション名+Testが良いと思います
- Test Target項目のラジオボタンで
An exsiting Android projectを選択します - 参照ボタンを押下して、アプリケーションを選択します
- 完了ボタンを押下します
- プロジェクトを開くと、パッケージフォルダが作成されています
- まずはここに、全てのテストクラスを実行するAllTests.javaクラスを作成します
- 次に作成したいクラスのテストクラスを作成します
- コンストラクタの引数は第一引数が「アプリケーションのフォルダ名」
第二引数が「テスト対象クラス名」
であること - テストメソッドはtest~で開始すること(アノテーションはなくても動きます)
- publicメソッドであること
- assertのメソッドを利用していること
- 以上がきちんと設定されていると、JUnitの緑色のバーが現れるはずです。
(例)アプリケーション名 : Sample
テストアプリケーション名 : SampaleTest
自動認識されて、ビルド・ターゲット欄とプロパティ欄が埋まります。
テストアプリケーションプロジェクトが作成されます。
import android.test.suitebuilder.TestSuiteBuilder;
import junit.framework.Test;
import junit.framework.TestSuite;
public class AllTests extends TestSuite {
public static Test suite() {
return new TestSuiteBuilder(AllTests.class)
.includeAllPackagesUnderHere()
.build();
}
}
以下のサンプルでは、アプリケーションのTopページActivityのTop.javaの
テストクラスを作成しています
import java.text.SimpleDateFormat;
import java.util.Calendar;
import jp.co.dietrecorder.R;
import jp.co.dietrecorder.Top;
import android.content.Context;
import android.test.ActivityInstrumentationTestCase2;
import android.test.suitebuilder.annotation.MediumTest;
import android.widget.TextView;
public class TopTest extends ActivityInstrumentationTestCase2{
public TopTest() {
super("jp.co.Sample", Top.class);
}
@Override
protected void setUp() throws Exception {
super.setUp();
}
/**
* アプリケーション初期立ち上げの時のデータ確認
*/
@MediumTest
public void testAppicationInit() {
assertTrue(true);
}
}
- この時、上記で注意しないとならないのは以下の通りです。
になります。
追記
テストクラスで継承しているActivityInstrumentationTestCase2クラスは
機能テストを行うクラスです。
単体テストはAndroidTestCaseで行えるようです。
ActivityInstrumentationTestCase2を継承すると、Activityをlaunchしてテストを
行いますが、AndroidTestCaseだとlaunchせずにテストが行えます。
私は、今回のアプリケーションではActivityInstrumentationTestCase2を利用してJunitテストを行う予定なので、
AndroidTestCaseを使ってテストをすることを考えている人は申し訳ありません。
では、次からは本格的なテストクラスを作成していきましょう
追記2
そのうちレンタルサーバーを借りてきれいにまとめます。自分でも確認したいのでw
こんばんは。
返信削除iPhoneとの勝負の行く末はまだまだ先のようですね。