Espresso 2 на Android, промежуточные тесты терпят неудачу после того, как не запущена тестируемая активность, а действия предыдущих тестов все еще живы

Я использую Espresso 2 для тестирования моего приложения для Android. Сразу же я вижу, что тесты случайным образом терпят неудачу с этим сообщением об ошибке Espresso:

Failed: testLongPressXXXXX (com.company.xxx.tests.testSuite.Test) —– begin exception —– android.support.test.espresso.NoMatchingViewException: нет представлений в иерархии найдено совпадение: с id: com. Company.xxx:id/xxx_view_id Просмотр иерархии: +> DecorView {id = -1, visibility = VISIBLE, width = 729, height = 319, has-focus = false, has-focusable = false, has-window-focus = true , Is-clickable = false, is-enabled = true, is-focus = false, is-focusable = false, is-layout-request = false, is-selected = false, root-is-layout-request = false, имеет -input-connection = false, x = 0.0, y = 0.0, child-count = 1} …

Каждое начало теста инструментарий Espresso выводит количество действий, которые все еще живы из предыдущего теста:

MonitoringInstrumentation: действия, которые все еще находятся в CREATED to STOPPED: (число)

Всякий раз, когда я вижу неудачный тест, я всегда вижу, что количество живых действий не равно 0, что заставило меня поверить, что это причина этой проблемы, хотя большую часть времени, когда есть активные действия перед тестом, тест все еще успешно проходит ,

Когда это происходит, устройство просто показывает начальный экран около 10 секунд перед сбоем. Это, конечно, происходит только тогда, когда я запускаю сразу несколько тестов.

Мой вопрос заключается в том, почему существуют активные действия между тестами и есть способ заставить Instrumentation подождать, пока действия предыдущего теста не закончатся, прежде чем перейти к следующему тесту.

Если у кого-то есть другая идея, почему тесты терпят неудачу, что также будет полезно.

Solutions Collecting From Web of "Espresso 2 на Android, промежуточные тесты терпят неудачу после того, как не запущена тестируемая активность, а действия предыдущих тестов все еще живы"

Этот вопрос задавали некоторое время назад, но, поскольку это все еще кажется релевантным, я думал, что разделю то, что нашел. Я столкнулся с аналогичной проблемой – AmbiguousViewMatcherException в представлениях, у которых есть уникальный идентификатор, разные тесты, которые не выполняются случайным образом, вероятно, из-за того, что действия не уничтожаются.

Это похоже на известную проблему и должно быть рассмотрено в следующем выпуске (см. Здесь: https://github.com/google/android-testing-support-library/issues/16 ). По-видимому, onDestroy () и isFinishing () не называются надежно после каждого теста, поэтому вы можете не получать новую активность каждый раз или даже заканчивать двумя действиями друг над другом.

Пока они не исправили это, я решил не тратить свое время на обходной путь, но с использованием эмуляторов Genymotion, которые решили мою проблему – возможно, потому что они работают быстрее, чем встроенные в Android Studio (как было предложено здесь ).