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