我注意到Espresso
每五秒轮询一次特定IdlingResource
的{{1}}方法。
是否可以调整此粒度?
提前致谢!
答案 0 :(得分:1)
简短回答:
不,它已融入IdlingPolicies.dynamicIdlingResourceWarningPolicy
,并且不受3.0.1版本的外部配置控制。此策略控制发布到处理程序的警告事件的频率。反过来,这些事件会导致对isIdleNow()
答案稍长:
这是一个很好的理由。 isIdleNow()
不是设置应用程序状态的地方。在调用isIdleNow()
时,应该已知状态。状态应该通过调用ResourceCallback::onTransitionToIdle
更新,一般(99%的时间)不在isIdleNow()
当文档说你应该立即返回时,文件会暗示它,但是没有说清楚。
更新isIdleNow()
中的状态使得它不仅仅是有条件地休眠线程。实际上,更糟糕的是,因为你的测试现在每个测试的速度慢了5秒。这违背了浓缩咖啡的目的,因为它杀死了测试的决定论。在我看来,由于内置的主线程同步和空闲资源接口,espresso测试的确定性使其如此之大。
说到这一点,不应该需要修改这个超时。调用ResourceCallback::onTransitionToIdle
会将此事件发布给处理程序,espresso将立即进行。
不幸的是,有很多例子甚至是博客促使效率低下。
如果你想要一个更传统的闲置资源,这些例子应该是很好的灵感来源:
DrawerActions$IdlingDrawerListener
与espresso-contrib捆绑在一起。 here is the source
CountingTaskExecutorRule
,这里是usage。