- 公開日: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 件のコメント:
コメントを投稿