我正在使用Espresso编写UI测试。我需要在双击上测试流,但在某些设备上无法这样做。
onView(withId(R.id.idOfView))
.check(matches(someAssertion()))
.perform(doubleClick())
但这会在我的 Nexus 5-API Level 23 模拟器上执行一次单击(有时是两次单击)。有趣的解决方法
perform(click(), doubleClick())
有效。但是我不确定我是否可以相信这一点。有什么我想念的吗?
答案 0 :(得分:1)
要使两次点击都被识别为双击,第二次点击的DOWN事件必须在第一次点击的UP事件的[min, max]
毫秒内发生。 min
和max
在不同的设备上可能有所不同,但我看到的值为40 ms min, and 300 ms max。
一个doubleClick
ViewAction
导致一个GeneralClickAction
和一个DOUBLE
Tapper
。
DOUBLE
Tapper
将在执行第二次点击之前等待所需的最小延迟。
模拟器可能发生的情况是,它运行的速度不够快,无法在您超过允许的最大延迟之前注入第二个单击事件。
当您执行perform(click(), doubleClick())
时,click
和doubleClick
之间可能没有任何等待,因此click
和{{1}的首次点击}最终可能会被视为双击慢速模拟器。那不能保证它可以在实际设备上运行,也不能在运行速度更快的计算机上运行的模拟器上运行。