Espresso doubleClick()在某些设备上不起作用

时间:2020-04-22 10:47:01

标签: android android-espresso android-instrumentation

我正在使用Espresso编写UI测试。我需要在双击上测试流,但在某些设备上无法这样做。

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

但这会在我的 Nexus 5-API Level 23 模拟器上执行一次单击(有时是两次单击)。有趣的解决方法

perform(click(), doubleClick())

有效。但是我不确定我是否可以相信这一点。有什么我想念的吗?

1 个答案:

答案 0 :(得分:1)

要使两次点击都被识别为双击,第二次点击的DOWN事件必须在第一次点击的UP事件的[min, max]毫秒内发生。 minmax在不同的设备上可能有所不同,但我看到的值为40 ms min, and 300 ms max

一个doubleClick ViewAction导致一个GeneralClickAction和一个DOUBLE Tapper

DOUBLE Tapper将在执行第二次点击之前等待所需的最小延迟。
模拟器可能发生的情况是,它运行的速度不够快,无法在您超过允许的最大延迟之前注入第二个单击事件。

当您执行perform(click(), doubleClick())时,clickdoubleClick之间可能没有任何等待,因此click和{{1}的首次点击}最终可能会被视为双击慢速模拟器。那不能保证它可以在实际设备上运行,也不能在运行速度更快的计算机上运行的模拟器上运行。