Espresso doubleClick () не работает на некоторых устройствах - PullRequest
1 голос
/ 22 апреля 2020

Я пишу тесты пользовательского интерфейса с помощью Espresso. Мне нужно проверить поток по двойному щелчку, но не удалось сделать это на некоторых устройствах.

onView(withId(R.id.idOfView))
            .check(matches(someAssertion()))
            .perform(doubleClick())

Но это выполняет один клик ( иногда два одиночных клика ) на моем Nexus 5 - API Level 23 эмулятора. Забавный обходной путь

perform(click(), doubleClick())

это работает. Но я не уверен, могу ли я доверять этому. Есть ли что-то, что я пропускаю?

1 Ответ

0 голосов
/ 22 апреля 2020

Чтобы два щелчка были распознаны как двойной щелчок, событие DOWN второго щелчка должно произойти в течение [min, max] мс после события UP первого щелчка. min и max могут отличаться для разных устройств, но я видел значения 40 мс мин и 300 мс макс .

A doubleClick ViewAction приводит к GeneralClickAction с DOUBLE Tapper.

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

Когда вы do perform(click(), doubleClick()) между click и doubleClick может не быть добавленного ожидания, поэтому click и первый щелчок doubleClick могут в конечном итоге быть распознаны как двойной щелчок на медленном эмуляторе , Это не гарантирует, что оно будет работать на реальном устройстве или на эмуляторе, работающем на более быстром компьютере.

...