Tôi có một thử nghiệm cần mở hộp thoại android.support.v7.preference.ListPreference, chọn một tùy chọn, mở Trình hướng dẫn và chọn một mục từ ngăn kéo.Android Espresso không chờ giao diện người dùng hoàn tất
Hộp thoại được định nghĩa như thế này:
<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 mở nó như thế này:
onView(withText(mActivityRule.getActivity().getResources().getString(R.string.pref_title_VALUE))
.perform(click());
này mở ListPreference, nhưng nó không chặn và dòng tiếp theo trong các thử nghiệm chạy ngay lập tức.
// click on setting
onView(withText(VALUE_IN_LIST_PREFERENCE))
.perform(click());
Vì điều đó xảy ra ngay lập tức, hộp thoại chưa xuất hiện và withText (VALUE_IN_LIST_PREFERENCE) không khớp với nội dung nào.
Nếu tôi bước qua với trình gỡ lỗi, tạm dừng trên dòng ở trên, hộp thoại sẽ xuất hiện đúng lúc và mã sẽ hoạt động.
Sự cố tương tự xảy ra với ngăn điều hướng. Nó mở ra như thế này:
// open the nav drawer
onView(withId(R.id.drawer_layout))
.perform(DrawerActions.open());
Và một mục được nhấp vào:
// click on phase 1
onView(withId(R.id.nav_view))
.perform(NavigationViewActions.navigateTo(R.id.nav_ITEM));
Như với ListPreferences, mã kiểm tra tiếp tục mà không cần chờ cho giao diện người dùng để kết thúc và do đó cuộc gọi đến OnView thất bại.
Tôi đã thử đặt chủ đề đến ngủ và sau câu trả lời ở đây https://stackoverflow.com/a/22563297/4950621
Trong cả hai trường hợp, tuy nhiên hộp thoại không xuất hiện cho đến khi chủ đề được thực hiện ngủ và kiểm tra xem chạy ngay lập tức. Vì vậy, vấn đề chỉ đơn thuần là trì hoãn, không được giải quyết.
Làm cách nào để đảm bảo rằng các kiểm tra Espresso không chạy cho đến khi các Chế độ xem cần thiết hiển thị?