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



我正在使用Espresso编写UI测试。我需要在双击时测试流,但在某些设备上未能做到这一点。

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

但这在我的Nexus5-API 23级模拟器上执行单击(有时两次单击(。有趣的解决方法

perform(click(), doubleClick())

它是有效的。但我不确定我是否能相信这一点。我缺少什么吗?

要将两次单击识别为双击,第二次单击的DOWN事件必须在第一次单击的UP事件的[min, max]ms内发生。minmax可能在不同的设备上有所不同,但我看到的值是最小40ms,最大300ms。

doubleClickViewAction导致具有DOUBLETapperGeneralClickAction

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

当您执行perform(click(), doubleClick())时,clickdoubleClick之间可能没有任何额外的等待,因此click和第一次单击doubleClick可能最终被识别为双击您的慢速模拟器。这并不能保证它能在实际设备上工作,也不能保证它在更快的计算机上运行的模拟器上工作。

最新更新