我正在为XCode 8编写一个非常复杂的应用程序的UI测试。我发现了几个问题,其中一个问题是我运行的每个测试都需要几分钟。
我正在运行的特定测试的流程甚至都不复杂。
我收到许多“等待app闲置”的消息。
有谁知道为什么测试需要这么长时间才能运行,或者您对如何加快测试有任何建议? WWDC演示基本上是即时的,但这是一个非常简单的应用程序。
以下是我看到的一个例子,以及需要多长时间。 (测试还在运行!)
t = 504.16s Wait for app to idle t = 625.29s App animations complete notification not received, will attempt to continue. t = 625.30s Synthesize event t = 625.67s Wait for app to idle
谢谢!
更新:当我与应用程序进行轻微交互时,同时保持我需要的元素,例如拉动tableview,测试会继续。
答案 0 :(得分:6)
谢谢@Oletha - 我发现了这个问题可能是特定的问题:
在一次删除大量代码以查看问题所在之后,我们发现我们在连续行上的destroyDestination
子类上调用了beginRefreshing
和endRefreshing
。
关于这一点的东西使用户界面停滞不前,足以让应用程序在“等待应用程序闲置”几分钟。
我们用自定义方法替换了这两行,现在测试正常运行。
答案 1 :(得分:4)
框架将等待应用程序变为静态,因此如果任何视图是动画或显示任何活动指示符(可能包括状态栏中的网络活动指示符),框架将挂起,直到应用程序静止。这是为了防止在UI测试运行时加载动画和组件的竞争条件。
如果您认为可以覆盖部分此类行为以加快UI测试,则可以尝试尝试删除活动指标。
答案 2 :(得分:0)
我遇到了同样的问题。解决方案是将调用endRefreshing从处理程序移动到处理程序中触发的网络方法的末尾。换句话说,如果刷新表视图,请确保在加载所有数据后endRefreshing。
答案 3 :(得分:0)
就我而言,是因为我有一些动画 (UIView.animate...
),所以我在从 UI 测试运行应用程序时必须UIView.setAnimationsEnabled(false)
(您可以发送 launchArguments
或其他内容)。< /p>
答案 4 :(得分:-1)
我遇到了同样的问题 - 在实际设备上我会不断看到“等待应用程序闲置”
2个简单的解决方案:
1)如果您在设备上运行,请确保它仍然(即不移动)。在按住设备的同时运行测试,它总是在等待应用程序空闲。平放在桌子上,测试运行良好。
2)或者,如果可能,在模拟器上运行测试