XCUIApplication()。launch()永不完成

问题描述:

我正在尝试第一次为基于沙盒,基于NSDocument的OSX应用程序目标运行UI测试,并且我遇到了Xcode 7.2.1和7.3 beta 3两个版本的问题, XCUIApplication().launch()调用在设置阶段卡住,并最终超时与下面的错误消息,虽然应用程序实际上处于可运行状态,并正常工作记录测试步骤等XCUIApplication()。launch()永不完成

我看到的错误消息如下所示: UI Testing Failure - App state is still not running, state = XCApplicationStateNotRunning

我没有定制任何方式测试的设置阶段。相关上市调用如下:

let app = XCUIApplication() app.launch()

任何想法?是否有方法强制通知XCUIApplication实例的新状态,或者发送通知,或者它正在代理应用程序中侦听的任何通知?

我可以看到(和还我自己的评论来)上看起来是一样的问题,这个开发者论坛发帖:https://forums.developer.apple.com/thread/30390

注:我报告说,这个是雷达中的错误,并发送回一个反应暗示了Xcode 7.3 beta版的晚期版本可以解决这个问题。事实上,这个Xcode错误已经修复,并且在使用Xcode 7.3运行我的UI测试时不会再出现问题,至少对于我用我的应用程序命中的场景来说!

+0

我会很好奇为什么这个问题被标记为-1而没有解释? – mz2

+0

这是一个真正的问题,我也不明白倒票。 – ishaq

+1

我有同样的问题,但这是因为我的应用程序是一个菜单栏应用程序,所以我必须启用“应用程序是代理(UIElement)”。我想这不是你的情况,是吗? – Gaston

我也遇到过这个问题,特别是在使用机器人运行UI测试时。由于之前的测试没有正确关闭,所以其他测试都会因此错误而失败。

为了避免这种情况,在您的测试设置阶段,添加以下行:

XCUIApplication().terminate()

因此,您的设置功能将类似于以下内容:

override func setUp() { 
     XCUIApplication().terminate() 

     super.setUp() 

     continueAfterFailure = false 
     XCUIApplication().launch() 
    } 

这是一个因为终止命令也在override func tearDown函数中,但应确保正确的测试环境。

+0

我很高兴地告诉大家,至少在影响到我的情况下,Xcode 7.3 final现在可以解决这个问题,而没有采取这种解决方法(我之前证实的问题也是在问题出现时才起作用)! – mz2