Espresso IdlingResource投票频率

时间:2017-12-05 21:48:25

标签: android android-espresso

我注意到Espresso每五秒轮询一次特定IdlingResource的{​​{1}}方法。

是否可以调整此粒度?

提前致谢!

1 个答案:

答案 0 :(得分:1)

简短回答:

不,它已融入IdlingPolicies.dynamicIdlingResourceWarningPolicy,并且不受3.0.1版本的外部配置控制。此策略控制发布到处理程序的警告事件的频率。反过来,这些事件会导致对isIdleNow()

的调用

答案稍长:

这是一个很好的理由。 isIdleNow()不是设置应用程序状态的地方。在调用isIdleNow()时,应该已知状态。状态应该通过调用ResourceCallback::onTransitionToIdle更新,一般(99%的时间)不在isIdleNow()

当文档说你应该立即返回时,文件会暗示它,但是没有说清楚。

更新isIdleNow()中的状态使得它不仅仅是有条件地休眠线程。实际上,更糟糕的是,因为你的测试现在每个测试的速度慢了5秒。这违背了浓缩咖啡的目的,因为它杀死了测试的决定论。在我看来,由于内置的​​主线程同步和空闲资源接口,espresso测试的确定性使其如此之大。

说到这一点,不应该需要修改这个超时。调用ResourceCallback::onTransitionToIdle会将此事件发布给处理程序,espresso将立即进行。

不幸的是,有很多例子甚至是博客促使效率低下。

如果你想要一个更传统的闲置资源,这些例子应该是很好的灵感来源:

okhttp idling resource

DrawerActions$IdlingDrawerListener与espresso-contrib捆绑在一起。 here is the source

来自Room library的

CountingTaskExecutorRule,这里是usage