前回のActivityInstrumentationTestCase2は「機能テスト」を行うためでした。
機能テストはその機能がテストするかどうかのテストです。
次は「単体テスト」をやりましょう。
Activityの単体テストということで、開始→終了までをテストします。
今回の流れはこちら。
1.ActivityInstrumentationTestCaseを継承する
2.テストしたいクラスを指定したコンストラクタを作成
3.テスト準備を行うsetUpメソッドを記述する
4.Activityを終了させる(この場合はBACKボタンの押下)
基本的には動作を変えただけですが。
UIをいじっての終了ではなく、ハードキー動作での終了なので
わりと簡素なコードになってます。
さ、順番に見ていきましょう。
1.ActivityInstrumentationTestCaseを継承する
- /* 1.ActivityInstrumentationTestCaseを継承する */
- public class CheckActivityTest2 extends ActivityUnitTestCase<checkactivity> {
- }
- </checkactivity>
*ソースコードにとありますが、エディタの補完機能でこうなっているだけです。無視してください。
今回は単体テストなので(Activity全体のテスト)、ActivityInstrumentationTestCaseを継承して使います。
2.テストしたいクラスを指定したコンストラクタを作成
- /* 2.テストしたいクラスを指定したコンストラクタを作成 */
- public CheckActivityTest2() {
- super(CheckActivity.class);
- }
コンストラクタはクラス名のみ指定で。
次。
3.テスト準備を行うsetUpメソッドを記述する
- /* 3.テスト準備を行うsetUpメソッドを記述する */
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- // Activityの起動
- startActivity(new Intent(), null, null);
- // Activityを取得
- mActivity = getActivity();
- }
自力でActivityを起動して取得しています。
次。
4.Activityを終了させる(この場合はBACKボタンの押下)
- /* 4.Activityを終了させる(この場合はBACKボタンの押下) */
- public void testPushBackButton() {
- KeyEvent event = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK);
- assertTrue(mActivity.dispatchKeyEvent(event));
- }
本当はActivityが終了したら~という判定になると思うんですが、
そのあたりが未調査(おい)なので、BACKボタンの判定をしています。
うまいかんじにおせたらテストOKとしています。
Activityに何かさせる場合はその都度テストがいるのだとおもいますが、
そのあたりは機能テストで網羅させて単体テストでは開始→終了のサイクルがみれればいいかなーともおもっていたり。
なんつか技術者的にそれはいいのか?とも思うのですが、それもそのうち。
どうにかしたいです。
では本日のソースコードをのせておわりにします。
- package jp.co.mogakana.check.test.testcase;
- import android.app.Activity;
- import android.content.Intent;
- import android.test.ActivityUnitTestCase;
- import android.view.KeyEvent;
- import jp.co.mogakana.check.test.CheckActivity;
- /* 1.ActivityInstrumentationTestCaseを継承する */
- public class CheckActivityTest2 extends ActivityUnitTestCase<checkactivity> {
- // Activity用
- private Activity mActivity;
- /* 2.テストしたいクラスを指定したコンストラクタを作成 */
- public CheckActivityTest2() {
- super(CheckActivity.class);
- }
- /* 3.テスト準備を行うsetUpメソッドを記述する */
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- // Activityの起動
- startActivity(new Intent(), null, null);
- // Activityを取得
- mActivity = getActivity();
- }
- /* 4.Activityを終了させる(この場合はBACKボタンの押下 */
- public void testPushBackButton() {
- KeyEvent event = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK);
- assertTrue(mActivity.dispatchKeyEvent(event));
- }
- }
- </checkactivity>
今日も素敵にノイローゼ★
こんにちは。
返信削除アンドロイド、益々充実してきますでしょうかね。