android.support.v7.preference.ListPreferenceダイアログを開き、オプションを選択してNavDrawerを開き、ドロワーからアイテムを選択するテストがあります。AndroidのエスプレッソでUIの終了を待たずに
ダイアログは次のように定義されています。
<android.support.v7.preference.ListPreference
android:defaultValue="@string/pref_default_VALUE"
android:entries="@array/pref_VALUE_entries"
android:entryValues="@array/pref_VALUE_values"
android:key="@string/pref_key_VALUE"
android:negativeButtonText="@null"
android:positiveButtonText="@null"
android:title="@string/pref_title_VALUE" />
エスプレッソはこのようにそれを開きます。
onView(withText(mActivityRule.getActivity().getResources().getString(R.string.pref_title_VALUE))
.perform(click());
これはListPreferenceを開くんが、それはブロックされませんし、テストの次の行すぐに実行されます。
// click on setting
onView(withText(VALUE_IN_LIST_PREFERENCE))
.perform(click());
それがすぐに起こるので、ダイアログは現れていないとwithText(VALUE_IN_LIST_PREFERENCEは)何にもマッチしません。
デバッガをステップオーバーして上の行で一時停止すると、ダイアログが時間内に表示され、コードが機能します。
同じ問題は、NAVの引き出しで発生します。それを次のように開かれています:
// open the nav drawer
onView(withId(R.id.drawer_layout))
.perform(DrawerActions.open());
そしてアイテムがクリックされた:ListPreferencesと同様に
// click on phase 1
onView(withId(R.id.nav_view))
.perform(NavigationViewActions.navigateTo(R.id.nav_ITEM));
、テストコードは、UIが終了するのを待たずに続行し、そうonViewへの呼び出しが失敗しました。スレッドが眠って行われ、ビューのテストはすぐに実行されるまで、私はスリープ状態にスレッドを入れ、ここでどちらの場合もhttps://stackoverflow.com/a/22563297/4950621
を答えを、次の試してみました
、しかしダイアログは表示されません。だから、問題は単に遅れるだけで解決されません。
必要なビューが表示されるまでエスプレッソテストが実行されないようにするにはどうすればよいですか?