Я столкнулся с проблемой на работе: тест Espresso давал сбой примерно каждые 10–20 раз. Когда это не удалось, это произошло с исключением AmbigiousViewMatcherException. Похоже, что происходит следующее: когда слайды менялись на карусели, Espresso время от времени запускал Matchers именно в тот момент, когда оба слайда были наполовину на экране. Это означало, что неожиданно присутствовали два представления с одинаковым идентификатором.
Один из подходов — добавить дополнительные условия к сопоставителям, убедившись, что они являются родственными представлениям. , например, показывающий определенный текст. Но это не идеально. Это раздражает, особенно когда на одном слайде нужно проверить несколько представлений. Это также не гибко. Если бы та же проблема возникла где-то еще в нашей кодовой базе, нам пришлось бы также задать дополнительные условия для каждого из этих Matcher.
IdlingResource - это стандартный способ борьбы с нестабильными тестами Espresso, когда вам нужно убедиться, что все установлено, прежде чем запускать Matcher. Чтобы найти решение, потребовалось больше работы, чем я ожидал, и я решил поделиться результатами с другими, столкнувшимися с той же проблемой. Ответ ниже.
Подробнее здесь: https://stackoverflow.com/questions/793 ... rexception