Android 意式浓缩咖啡查询频率
我注意到,Android 意式浓缩咖啡查询频率,android,android-espresso,Android,Android Espresso,我注意到,Espresso每五秒钟轮询一次特定的idlingsource的isIdleNow()方法 是否可以调整此粒度 提前谢谢 简短回答: 不,从3.0.1版开始,它被烘焙到IdlingPolicies.dynamicIdlingResourceWarningPolicy中,不受外部配置控制。此策略控制发布到处理程序的警告事件的频率。这些事件反过来导致调用isIdleNow() 稍长一点的回答: 这样做有很好的理由isIdleNow()不是设置应用程序状态的地方。调用isIdleNow()时
Espresso
每五秒钟轮询一次特定的idlingsource
的isIdleNow()
方法
是否可以调整此粒度
提前谢谢 简短回答:
不,从3.0.1版开始,它被烘焙到IdlingPolicies.dynamicIdlingResourceWarningPolicy
中,不受外部配置控制。此策略控制发布到处理程序的警告事件的频率。这些事件反过来导致调用isIdleNow()
稍长一点的回答:
这样做有很好的理由<代码>isIdleNow()不是设置应用程序状态的地方。调用isIdleNow()
时,状态应该已经已知。应通过调用ResourceCallback::onTransitionToIdle
更新状态,通常(99%的时间)不在isIdleNow()内
文档提示您应该立即返回,但没有明确说明
更新isIdleNow()
中的状态并不比有条件地休眠线程好多少。实际上,这会使情况变得更糟,因为您的测试现在每个测试慢5秒。这违背了浓缩咖啡的目的,因为它扼杀了测试的决定论。在我看来,由于内置的主线程同步和空闲资源接口,espresso测试的决定论使得它如此强大
因此,不需要修改此超时。调用ResourceCallback::onTransitionToIdle
会将此事件发布到处理程序中,浓缩咖啡会立即继续
不幸的是,有很多例子,甚至博客都在宣传低效的实现
如果您想要一个更传统的空闲资源,这些例子应该是很好的灵感来源:
drawerractions$IdlingDrawerListener
与意式浓缩咖啡捆绑销售
CountingTaskExecutorRule
来自Room library,以下是它的详细说明。非常感谢您的快速详细回复。让我读一下,然后再回复。再次感谢!嘿,弗拉德!!是的,你是对的,这种行为是用浓缩咖啡硬编码的,改变它的唯一方法是改变源代码并重新编译jar。在继续测试之前,我每隔一段时间执行一次viewsertion
,以检查可见性(或其他任意View
状态)。这非常有效,但有时Espresso在检查ViewAssertion
之前等待太久,因为后台任务仍然没有空闲(我在这里没有太多选择,因为团队希望不惜一切代价让生产代码免于测试代码…我知道,对吧!?)。这真的很糟糕。想要使用IdlingResource
,但现在无法使用,因为我的生产代码中的更改更改了isIdleNow()的调用频率,而这是我无法更改的。我花了一整天的时间调试这个。