1) Все тестируемые устройства/эмуляторы отключены.Flaky Android Espresso Test - Закусочная
2) У меня есть @BeforeClass, который строит мой объект Credentials.
3) У меня есть IntenServiceIdlingResource и EventBusIdlingResource, зарегистрированные в @Before.
4) При нажатии кнопки входа в систему запускается IntentService. В этом случае сервер (издевавшийся сервер) возвращает ошибку 500. Эта информация отправляется обратно в пользовательский интерфейс от IntentService, через EventBus от greenrobot, а Snackbar отображается с сообщением об ошибке.
Вот код для теста:
@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()));
}
Это исключение, которое я обычно получаю:
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"
По моим лесозаготовкам, мои холостой ход ресурсы работают. Но, глядя на отметки времени для журналов, исключение происходит примерно через 5 секунд после того, как ресурсы холостого хода простаивают.
Кажется, существует задержка между тем, когда ресурсы простаивают, и когда он пытается искать представление.
Другие, возможно, соответствующие детали:
- minSdk: 20
- компилировать & targetSdk: 25
- : 25.0.2 инструмент сборки
- поддержка библиотека: 25.1.1
- эспрессо-ядро : 2.2.2
- gradle plugin 2.3.0-beta3
Как я могу исправить этот тест, чтобы он не был шелушащимся, кроме того, что накапливалось время, когда показываются мои закусочные?
СПАСИБО. Зависимость эспрессо от IdlingResource заставляла меня бананами. В моих классах нет веских оснований для того, чтобы скрещивать тестовый код рамки, и вот как это должно быть сделано правильно. Я все еще не могу поверить, что у эспрессо уже нет такого! –