最近,我开始使用集成测试来覆盖我的项目,其中mockito提供了演示者实例,以验证我的观点是否在他们的活动期间正确调用了演示者方法。
问题出现在屏幕上,该屏幕隐身ProgressBar
和RecyclerView
。该屏幕的演示者已加载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
但是活动已成功运行,并且可供所有用户事件(如点击等)访问。
您如何看待,导致问题的原因是什么?
这是一个仅针对社区知识库的问题,我已经找到了自己的答案。
答案 0 :(得分:0)
解释是在错误代码行中:可能会有动画或某些内容不断重新绘制屏幕。
当我用mockito替换演示者时,它也停止控制进度条。它的初始状态是View.VISIBLE
,因此导致测试无法连接。
解决方案只是将ProgressBar
的初始状态设置为View.GONE
,但发现这对我来说有点头疼。