2015年9月8日火曜日

Android Studio UnitTestの実装と実行

  • 公開日:2015年09月08日

記事概要


Android StudioでのUnitTestの実装方法と実行方法を記載した記事です

環境


  • Android Studio 1.3.0
  • OS X Yosemite
  • android sdk 23(Android 6.0 Marshmallow(マシュマロ))

gradleの設定


まずはUnitTestを利用できるようにgradleの設定を行ないます。
android sdkは23.0(Android 6.0 Marshmallow(マシュマロ))を利用します。


apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.0"

    defaultConfig {
        minSdkVersion 19
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:23.0.0'
    compile 'com.android.support:cardview-v7:23.0.0'
    compile 'com.android.support:support-v4:23.0.0'
    compile 'com.android.support:recyclerview-v7:23.0.0'
    compile 'com.android.support:design:23.0.0'
    compile 'com.google.android.gms:play-services:7.8.0'
    androidTestCompile 'com.android.support:support-annotations:23.0.0'
    androidTestCompile 'com.android.support.test:runner:0.3'
    androidTestCompile 'com.android.support.test:rules:0.3'
}

gradleファイルにはtestInstrumentationRunnerとandroidTestCompileの3行を記述します。

テストコードの実装


続いてテストコードを実装します。
テストの粒度は難しい問題ですが、共通メソッドやモデル(ヘルパー)の複雑度の高い部分を実装するのがコスト的によいと思います。


public class SampleHelperTest extends ActivityInstrumentationTestCase2<SampleActivity> {

    private SampleActivity mSampleActivity;

    public SampleHelperTest() {
        super(SampleActivity.class);
    }

    @Override
    protected void setUp() throws Exception {
        super.setUp();

        // Starts the activity under test using the default Intent with:
        // action = {@link Intent#ACTION_MAIN}
        // flags = {@link Intent#FLAG_ACTIVITY_NEW_TASK}
        // All other fields are null or empty.
        mSampleActivity = getActivity();

    }

    /**
     * testデータを登録
     */
    @Test
    public void testInsert() {
        ContentValues contentValues = new ContentValues();
        contentValues.put(Test.TestsColumns.TEST_ID, 1);
        contentValues.put(Test.TestsColumns.TEST_DATA, "test");
        contentValues.put(Test.TestsColumns.TEST_CREATED_AT, System.currentTimeMillis());
        contentValues.put(Test.TestsColumns.TEST_UPDATED_AT, System.currentTimeMillis());

        Context context = new RenamingDelegatingContext(mSampleActivity.getApplicationContext(), "test_");

        // データ登録
        long result = SampleHelper.insert(context, contentValues);
        assertEquals(1, result);
        // データ削除
        SampleHelper.deleteaAll(context);

    }

}

上記のサンプルはActivityInstrumentationTestCase2を継承し、モデルのテストメソッドの実装を行っています。
DBは本番と異なるファイルを使うために、RenamingDelegatingContextを利用しています。

これでソースコードの準備は完了です。続いてAndroid Studioの設定を行ないます。

Android Studioの設定


メニューのEdit Configurations ...を選択してConfigurations画面を開きます。

左上のプラスボタンを押下します。

Android Testsを選択します。

Nameを入力しModuleを選択してOKボタンを押します。

メニューの上記に入力したNameを押下してUnitTestを実行します。

緑(赤)のバーが表示されれば成功です。

まとめ


Eclipseに比べ、Android Studioはテストを実行しやすくなっています。
jenkinsを利用している場合は、gradleを使って直接コマンドを叩くと良いでしょう。
コマンドはAndroid Studioのコンソールに出力されるので、そのコマンドをjenkinsのシェルで呼びだしましょう。

以上

Androidアプリ開発にオススメの本


開発にあると便利なオススメ製品


関連記事 参考サイト

この記事がお役にたちましたらシェアをお願いします

このエントリーをはてなブックマークに追加

0 件のコメント:

コメントを投稿

Related Posts Plugin for WordPress, Blogger...