gpt4 book ai didi

android - Espresso IdlingResource 轮询频率

转载 作者:太空狗 更新时间:2023-10-29 13:50:56 26 4
gpt4 key购买 nike

我注意到 Espresso 每五秒轮询一个特定的 IdlingResourceisIdleNow() 方法。

是否可以调整这个粒度?

提前致谢!

最佳答案

简答:

不,从 3.0.1 版开始,它已融入 IdlingPolicies.dynamicIdlingResourceWarningPolicy 中,不受外部配置控制。此策略控制发布到处理程序的警告事件的频率。这些事件依次导致调用 isIdleNow()

稍微长一点的答案:

这是有充分理由的。 isIdleNow() 不是设置应用程序状态的地方。在 isIdleNow() 被调用时,状态应该是已知的。状态应该通过调用 ResourceCallback::onTransitionToIdle 来更新,通常(99% 的时间)不在 isIdleNow()

当文档说您应该立即返回时,文档对此有所暗示,但没有说清楚。

isIdleNow() 中更新状态并不比让线程有条件地休眠好多少。实际上,情况更糟,因为您的测试现在在每次测试的基础上慢了 5 秒。这违背了 Espresso 的目的,因为它扼杀了测试的确定性。在我看来,由于内置的​​主线程同步和空闲资源接口(interface), Espresso 测试的确定性使其如此出色。

话虽如此,应该不需要修改此超时。调用 ResourceCallback::onTransitionToIdle 会将此事件发送到处理程序,espresso 将立即处理。

不幸的是,有很多示例甚至博客都在提倡低效的实现。

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

okhttp idling resource

DrawerActions$IdlingDrawerListener 与 espresso-contrib bundle 在一起。 here is the source .

CountingTaskExecutorRule 来自 Room 库,这里是 usage

关于android - Espresso IdlingResource 轮询频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47663200/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com