2014年3月10日月曜日

Android Studio - Espressoを使えるようにする

Android StudioでのテストでEspressoを導入したので、導入メモ。
Android Studioのバージョンは、0.5.1を使用しています。


1. 開発者向けオプションの設定

「設定」-「開発者向けオプション」の以下の設定をオフにします。
・ウィンドウアニメスケール
・トランジションアニメスケール
・Animator再生時間スケール


2. ライブラリーを追加する

ライブラリーには、依存ライブラリーを含めたstandaloneと依存ライブラリーが別々になっているdependenciesがあります。
今回は、standaloneを使用します。

standaloneからzipファイルをダウンロードします。
「bin」-「espresso-standalone」に「espresso-1.1-bundled.jar」がありますので、プロジェクトの「libs」フォルダーへコピーします。


3. AndroidManifest.xmlを編集する

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="パッケージ名" >

    <application>
        <uses-library android:name="android.test.runner" />
    </application>

    <instrumentation
        android:name="com.google.android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner"
        android:targetPackage="ターゲットパッケージ名" />
</manifest>
この段階では、「android:name」が赤い文字になっていますが、「build.gradle」ファイルを編集し、同期させると正常に認識されます。

「android:targetPackage」も赤い文字になっていますが、原因はまだわかっていません。とりあえず問題はないので、そのままで大丈夫です。


4. build.gradleを編集する

android {
    defaultConfig {
        testInstrumentationRunner "com.google.android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner"
    }
}
dependencies {
    androidTestCompile files('libs/espresso-1.1-bundled.jar')
}

入力が終わったら、同期をさせます。


5. Run/Debug Configurationを編集する

「Run」-「Edit Configurations…」を開き、「+」ボタンを押して、「Android Test」を選択します。
「Name」に適宜名前を入力し、「Specific instrumentation runner (optional)」に以下を入力します。

com.google.android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner

入力したら、「OK」ボタンを押します。


これで、Android StudioでEspressoを使用することができます。


6. サンプル
import static com.google.android.apps.common.testing.ui.espresso.Espresso.onView;
import static com.google.android.apps.common.testing.ui.espresso.action.ViewActions.click;
import static com.google.android.apps.common.testing.ui.espresso.matcher.ViewMatchers.withId;

import android.test.ActivityInstrumentationTestCase2;

public class MainActivityTest extends ActivityInstrumentationTestCase2<MainActivity> {

    public MainActivityTest() {
        super(MainActivity.class);
    }

    public void setUp() throws Exception {
        super.setUp();
        getActivity();
    }

    public void testMethod() {
        onView(withId(R.id.button1)).perform(click());
    }
}


こんなかんじです。


参考:
Espresso
EspressoSamples
Y.A.M の 雑記帳: Android UI Testing framework の Espresso を使う

0 件のコメント:

コメントを投稿