1) Tất cả các thiết bị/trình mô phỏng đang được thử nghiệm đều tắt hoạt ảnh.Flaky Android Espresso Test - Snackbar
2) Tôi có @BeforeClass tạo đối tượng Thông tin xác thực của tôi.
3) Tôi có IntenServiceIdlingResource và EventBusIdlingResource, đã đăng ký trong @Trước.
4) Khi nút đăng nhập được nhấp, IntentService sẽ tắt. Trong trường hợp này, máy chủ (một máy chủ giả lập) đang trả về lỗi 500. Thông tin đó được đăng trở lại giao diện người dùng từ IntentService, thông qua EventBus của greenrobot và một Snackbar được hiển thị cùng với thông báo lỗi.
Dưới đây là đoạn code cho kỳ thi này:
@Test
public void a_userNamePasswordTest() throws Exception {
// email input
ViewInteraction userNameView = onView(withId(R.id.email));
// verify it's on screen and enabled
userNameView.check(matches(isDisplayed())).check(matches(isEnabled()));
// set the username
userNameView.perform(scrollTo(), replaceText(credentials.username), closeSoftKeyboard());
// password input
ViewInteraction passwordView = onView(withId(R.id.password));
// verify it's on screen and enabled
passwordView.check(matches(isDisplayed())).check(matches(isEnabled()));
// set the password.
passwordView.perform(scrollTo(), replaceText(credentials.password), closeSoftKeyboard());
// sign in button
ViewInteraction signInButton = onView(withId(R.id.email_sign_in_button));
// verify the button
signInButton.check(matches(allOf(
isDisplayed(), isEnabled(), withText("Sign In"), withContentDescription("Sign In")
)));
// clickity click the button
signInButton.perform(scrollTo(), click());
// verify the snackbar text
onView(withText(startsWith("Server Error: 500"))).check(matches(isDisplayed()));
}
Đây là ngoại lệ tôi thường nhận được:
SignInExceptionTest > a_userNamePasswordTest[Nexus_6P_API_23(AVD) - 6.0] FAILED android.support.test.espresso.NoMatchingViewException: No views in hierarchy found matching: with text: a string starting with "Server Error: 500"
Theo ghi chép của tôi, tài nguyên idling tôi đang làm việc. Nhưng nhìn vào dấu thời gian cho nhật ký, ngoại lệ xảy ra khoảng 5 giây sau khi tài nguyên không hoạt động đã không hoạt động.
Dường như có sự chậm trễ giữa thời điểm tài nguyên không hoạt động và khi cố gắng tìm kiếm chế độ xem.
chi tiết có thể thích hợp khác:
- minSdk: 20
- biên dịch & targetSdk: 25
- buildTools: 25.0.2
- hỗ trợ thư viện: 25.1.1
- espresso-core : 2.2.2
- plugin gradle 2.3.0-beta3
Làm cách nào tôi có thể khắc phục thử nghiệm này để thử nghiệm không bị bong bóng, bên cạnh việc tăng thời gian hiển thị các thanh snack của tôi?
CẢM ƠN BẠN. Sự phụ thuộc của Espresso vào IdlingResource đã khiến tôi bị chuối. Không có lý do chính đáng nào để đưa mã khung kiểm thử vào các lớp của tôi, và đây là cách nó nên được thực hiện đúng cách. Tôi vẫn không thể tin rằng Espresso không có thứ như thế này! –