模拟演示者导致集成测试转储

时间:2016-10-11 13:35:08

标签: android integration-testing android-junit

最近,我开始使用集成测试来覆盖我的项目,其中mockito提供了演示者实例,以验证我的观点是否在他们的活动期间正确调用了演示者方法。

问题出现在屏幕上,该屏幕隐身ProgressBarRecyclerView。该屏幕的演示者已加载RecyclerView的数据并控制ProgressBar的可见性。当我用mock替换它(使用Mockito)时,它导致相应的测试在一段时间后完全陷入错误:

Could not launch intent Intent { act=android.intent.action.MAIN flg=0x14000000 
cmp=com.example.kinopoisk/com.example.mvp.view.activity.MainActivity } within 45 seconds. 
Perhaps the main thread has not gone idle within a reasonable amount of time? 
There could be an animation or something constantly repainting the screen. 
Or the activity is doing network calls on creation? See the threaddump logs. 
For your reference the last time the event queue was idle before your activity launch request 
was 1476191336691 and now the last time the queue went idle was: 1476191336691. 
If these numbers are the same your activity might be hogging the event queue

但是活动已成功运行,并且可供所有用户事件(如点击等)访问。

您如何看待,导致问题的原因是什么?

这是一个仅针对社区知识库的问题,我已经找到了自己的答案

1 个答案:

答案 0 :(得分:0)

解释是在错误代码行中:可能会有动画或某些内容不断重新绘制屏幕。

当我用mockito替换演示者时,它也停止控制进度条。它的初始状态是View.VISIBLE,因此导致测试无法连接。

解决方案只是将ProgressBar的初始状态设置为View.GONE,但发现这对我来说有点头疼。