Lollipop中的自动化测试 - waitForIdleSync永远停留

时间:2015-07-01 14:43:00

标签: android automated-tests

自从我开始使用Google的一款新设备进行测试后,每当我们调用waitForIdleSync()时,我的测试就会停滞不前。当我查看浓缩咖啡的文档时,我发现了这个惊人的花絮:"为了避免赘肉,我们强烈建议您关闭系统动画"。请参阅the main pagehow to do it programmatically

但是,我已按照说明操作(禁用动画并重启我的设备),我的测试仍然卡住了。谷歌的文档习惯于快速过时,因此,我需要做些什么才能让它在新设备上运行?

1 个答案:

答案 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的前提条件,让它不会陷入这种状态。

欢迎提出其他建议!