android.support.v7.preference.ListPreference 대화 상자를 열고 필요한 옵션을 선택하고 NavDrawer를 열고 서랍에서 항목을 선택해야하는 테스트가 있습니다.Android Espresso 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
답을 다음 시도
그러나 대화 상자가 표시되지 않습니다. 따라서 문제는 단순히 지연되고 해결되지는 않습니다.
필요한 뷰가 표시 될 때까지 에스프레소 테스트가 실행되지 않도록하려면 어떻게해야합니까?