【发布时间】:2018-03-06 22:50:44
【问题描述】:
很多人都问过如何让 Espresso 框架在执行操作或断言之前等待后台任务完成。 我知道在这些情况下,IdlingResource 通常是答案。
我的问题正好相反。 我有一个 Espresso 默认等待的倒计时,因为 ProgressBar 会更新。在倒计时期间,我有一种“取消”按钮来停止倒计时。
我要编写的测试将设置后台任务并检查取消按钮是否将应用程序带回上一个屏幕。现在它在尝试单击取消按钮之前等待后台任务完成,但在任务完成后取消按钮会消失。
即使应用程序没有空闲,我如何“强制”Espresso 执行操作(单击取消)?
【问题讨论】:
-
不是通过
Espresso的ViewInteractions 执行此操作,而是尝试将Runnable发布到队列的最前面来执行您的操作?理论上它应该做你想要的。您可以尝试将Handler与主要的Looper一起使用(例如new Handler(Looper.getMainLooper).postAtFrontOfQueue(yourRunnable))。 -
您找到解决方案了吗?我遇到了类似的问题,我想在我的应用程序进行 API 调用时验证我的进度条是否正确显示。但我不能导致我的应用在拨打此类电话时没有空闲。
-
我还没有找到解决办法。我尝试了 oaskamay 的建议,方法是启动进度条,然后使用带有可运行对象的处理程序,尝试单击取消按钮,但奇怪的是它崩溃了,没有错误消息。当可运行对象只是记录一条消息时,不会发生崩溃。
标签: java android testing android-espresso