自从我开始使用Google的一款新设备进行测试后,每当我们调用waitForIdleSync()
时,我的测试就会停滞不前。当我查看浓缩咖啡的文档时,我发现了这个惊人的花絮:"为了避免赘肉,我们强烈建议您关闭系统动画"。请参阅the main page和how to do it programmatically。
但是,我已按照说明操作(禁用动画并重启我的设备),我的测试仍然卡住了。谷歌的文档习惯于快速过时,因此,我需要做些什么才能让它在新设备上运行?
答案 0 :(得分:0)
我遇到同样的问题,过去两天完全打破了我们的测试。
<强>问题强>
我经常研究这个问题。实际上这是一个AOSP错误:https://code.google.com/p/android/issues/detail?id=82046 (从https://code.google.com/p/android/issues/detail?id=61111重新开启)
如果您的“活动/布局”中有动画,加载微调器,进度条等长时间运行,则会出现此问题。
因此,{p>waitForIdleSync()
将永远等待。
在我们的案例中,这是非常有问题的,因为getActivity()
的方法launchActivity()
,launchActivityWithIntent()
和ActivityInstrumentationTestCase2
以及新AndroidTestCase
的方法{{1}在里面。
解决方案建议
您可以尝试关闭动画或通过Intent Flag将任何ProgressSpinner的可见性设置为waitForIdleSync()
并启动它。 (就我个人而言,我不喜欢这种解决方案,因为它会影响活动本身,而不会影响测试代码)
另一种方法是模拟Activity的前提条件,让它不会陷入这种状态。
欢迎提出其他建议!