Android Espresso 初心者導入用のサンプル

Android

Android JUnit4 初心者導入用のサンプル]]というのを以前書きましたが、今回は、[[Espressoというフレームワークを使ったJUnitのテストを作ります。
前置きですが、自分自身初心者なので、「初心者用のサンプル」とはいささかおこがましいですが(^_^)、何か間違いがあれば、訂正していってください┌o ペコッ

まずは、gradle。
いっつもねー ここで必ず一波乱ある…。
もれなく今回も。
今回の問題は、該当のアプリのtargetSdkのバージョンを、22にしていたことです。
どうしても、22のままでは、espressoを読み込めなかった…orz
なので、targetSdkのバージョンを、23にしました。

下記のサイトのほぼコピペですが、appのレベルのbuild.gradleを次のように編集します。

https://developer.android.com/training/testing/start/index.html?hl=ja#config-instrumented-tests

 dependencies {
    androidTestCompile 'com.android.support:support-annotations:23.0.1'
    androidTestCompile 'com.android.support.test:runner:0.4.1'
    androidTestCompile 'com.android.support.test:rules:0.4.1'
    // Optional -- Hamcrest library
    androidTestCompile 'org.hamcrest:hamcrest-library:1.3'
    // Optional -- UI testing with Espresso
    androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.1'
    // Optional -- UI testing with UI Automator
    androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.1'
 }
 android {
    defaultConfig {
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
 }

んで、次の問題。

 @RunWith(AndroidJUnit4.class)

 Cannot resolve symbol 'AndroidJUnit4'

で読み込めない。

もちろん、espressoさんも

 import static android.support.test.espresso.Espresso.onView;

 Cannot resolve symbol 'espresso'

で読み込めない。。。

これに結構はまりましたが、正解は、テスト用のコードの置き場所が違っていたのでした…。

app\src\testの下ではなく、app\src\androidTestの下にテストコードを置かないとダメなのです。

espresso.jpg

このあたり、どっかの設定とかで変更できるのかなー

よくわかりません。

で、やーっとテストできるかと思いきや!
上記の図にある、RegisterActivityTest.javaを右クリックして、Run RegisterActivityTestを押しても、

 Class not found:  "jp.onlineconsultant.hogehoge.RegisterActivityTest"Empty test suite.

となってしまい、テストできません。(つД`)

これも、jp.onlineconsultant.hogehogeのディレクトリのところを右クリックして、Run Tests in と書いてあるのをクリックすると、テストができます。

さあてさて、RegisterActivityTest.javaはこんな感じです。
初心者用の超シンプルなサンプルですので、ご容赦を。

 @RunWith(AndroidJUnit4.class)
 @LargeTest
 public class RegisterActivityTest {
 
    private RegisterActivity mRegisterActivity = null;
    private Button mRegisterButton;
    private EditText mLast_name_box;
 
    @Rule
    public ActivityTestRule<RegisterActivity> mActivityRule = new ActivityTestRule<>(
            RegisterActivity.class);
 
    @Before
    public void setUp(){
 
        onView(withId(R.id.register_button)).check(matches(withText("送信")));
 
    }
 
    //テストが動作するかだけの確認用
    @Test
    public void testGetCrowd() {
        Assert.assertEquals(1, 1);
    }
 }

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です