Ich habe einen Test, der ein Dialogfeld android.support.v7.preference.ListPreference öffnen muss, wählen Sie eine Option, öffnen Sie den NavDrawer und wählen Sie ein Element aus der Schublade.Android Espresso wartet nicht auf die Benutzeroberfläche
wird der Dialog wie folgt definiert:
<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" />
Espresso es wie folgt geöffnet:
onView(withText(mActivityRule.getActivity().getResources().getString(R.string.pref_title_VALUE))
.perform(click());
Das die ListPreference öffnet, aber es nicht blockiert und die nächste Zeile im Test läuft sofort.
// click on setting
onView(withText(VALUE_IN_LIST_PREFERENCE))
.perform(click());
Da dies sofort geschieht, hat der Dialog nicht erschienen und withText (VALUE_IN_LIST_PREFERENCE) passt nichts.
Wenn ich mit einem Debugger durch, in der obigen Zeile pausieren, erscheint der Dialog rechtzeitig und der Code wird funktionieren.
Das gleiche Problem passiert dann mit der Nav-Schublade. Es ist wie folgt geöffnet:
// open the nav drawer
onView(withId(R.id.drawer_layout))
.perform(DrawerActions.open());
Und ein Artikel angeklickt:
// click on phase 1
onView(withId(R.id.nav_view))
.perform(NavigationViewActions.navigateTo(R.id.nav_ITEM));
Wie bei dem ListPreferences, wird der Test fortgesetzt Code ohne warten, für die Benutzeroberfläche zu beenden und so der Anruf an OnView ausfällt.
ich versucht habe, setze den Thread zu schlafen und im Anschluss an die Antwort hier https://stackoverflow.com/a/22563297/4950621
In beiden Fällen sind jedoch der Dialog nicht erscheint, bis das Thema Schlafen fertig ist und die Ansicht Testläufe sofort. Also, das Problem ist nur verzögert, nicht gelöst.
Wie stelle ich sicher, dass die Espresso-Tests nicht ausgeführt werden, bis die erforderlichen Ansichten sichtbar sind?