模拟演示者导致集成测试转储
Mocking presenter cause integration test to dump
最近我开始用集成测试覆盖我的项目,其中 mockito 提供演示器实例来验证我的视图在事件期间是否正确调用演示器方法。
问题出在屏幕上,其中 ProgressBar
和 RecyclerView
不可见。该屏幕的演示者一直在加载 RecyclerView
的数据并控制 ProgressBar
的可见性。当我用模拟(使用 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
但是 activity 成功 运行 并且可以访问所有用户事件,例如点击等。
你怎么看,是什么原因造成的?
这只是社区知识库的问题,我自己找到了答案。
解释是在那一行错误代码中:可能有动画或其他东西不断地重新绘制屏幕。
当我用 mockito 的演示器替换演示器时,它也停止控制进度条。它的初始状态是 View.VISIBLE
,所以这是导致测试无法连接的原因。
解决方案只是将ProgressBar
的初始状态设置为View.GONE
,但发现这让我有点头疼。
最近我开始用集成测试覆盖我的项目,其中 mockito 提供演示器实例来验证我的视图在事件期间是否正确调用演示器方法。
问题出在屏幕上,其中 ProgressBar
和 RecyclerView
不可见。该屏幕的演示者一直在加载 RecyclerView
的数据并控制 ProgressBar
的可见性。当我用模拟(使用 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
但是 activity 成功 运行 并且可以访问所有用户事件,例如点击等。
你怎么看,是什么原因造成的?
这只是社区知识库的问题,我自己找到了答案。
解释是在那一行错误代码中:可能有动画或其他东西不断地重新绘制屏幕。
当我用 mockito 的演示器替换演示器时,它也停止控制进度条。它的初始状态是 View.VISIBLE
,所以这是导致测试无法连接的原因。
解决方案只是将ProgressBar
的初始状态设置为View.GONE
,但发现这让我有点头疼。