前回、AndroidTestで必要となるesspressoとサンプルコードをついて紹介した。
今回はより具体的なコードを紹介する。
Spinnerの選択
UIテストでSpinnerをクリックするコードは以下のとおりである。
//spinnerの選択肢で"hoge"と表示されている選択肢をクリックする
onData(allOf(is(instanceOf(String.class)), is("hoge"))).perform(click());
Buttonの有効性を確かめる
例えばボタンが有効状態かどうか確かめるには以下のコードを書く
//リソースIDがR.id.buttonが有効かどうか検証
onView(withId(R.id.button)).check(matches(isEnabled()));
BACKキーを押す
クリックにはclick()があったが、BACKキーにもメソッドがある。
Espresso.pressBack();
スクロールする
スクロールしてから、クリックなどしたい場合は以下のように書く。
//R.id.NEXT_ACTIVITYの位置までスクロールし、クリックする
onView(withId(R.id.NEXT_ACTIVITY)).perform(scrollTo(), click());
Activityの生成を確かめる
確認にはActivityMonitorを使う
ActivityMonitorを作成し、Instrumentation.addMonitor()で登録。
これより後に起動したActivityのインスタンスを取得できる。。
Instrumentation.ActivityMonitor monitor = new Instrumentation.ActivityMonitor(SessionDetailActivity.class.getCanonicalName(), null, false);
InstrumentationRegistry.getInstrumentation().addMonitor(monitor);
登録後の起動確認コードは以下のとおりである。
Activity nextActivity = monitor.waitForActivityWithTimeout(5000);
assertThat(nextActivity, Matchers.is(Matchers.notNullValue()));
nextActivity.finish();