Cocoa XUIApplication().launch()从未完成

Cocoa XUIApplication().launch()从未完成,cocoa,xcode-ui-testing,Cocoa,Xcode Ui Testing,我第一次尝试为一个沙盒、基于NSDocument的OSX应用程序目标运行UI测试,我遇到了Xcode 7.2.1和7.3 beta 3的一个问题,安装阶段中的XguiApplication().launch()调用被卡住,最终超时并显示以下错误消息,尽管应用程序实际上处于可运行状态,并且可以很好地记录测试步骤等 我看到的错误消息如下: UI测试失败-应用程序状态仍未运行,状态=xApplicationStateNotRunning 我没有以任何方式定制测试的设置阶段。相关的启动呼叫如下所示: l

我第一次尝试为一个沙盒、基于NSDocument的OSX应用程序目标运行UI测试,我遇到了Xcode 7.2.1和7.3 beta 3的一个问题,安装阶段中的
XguiApplication().launch()
调用被卡住,最终超时并显示以下错误消息,尽管应用程序实际上处于可运行状态,并且可以很好地记录测试步骤等

我看到的错误消息如下:
UI测试失败-应用程序状态仍未运行,状态=xApplicationStateNotRunning

我没有以任何方式定制测试的设置阶段。相关的启动呼叫如下所示:

let app=xguiapplication()
app.launch()

有什么想法吗?是否有办法将新状态强制传递给XUIApplication实例,或向其发送通知或它在代理应用程序中侦听的任何内容

我可以看到(我自己也发表了评论)这篇开发者论坛的帖子,内容看起来是同一个问题:


注意:我报告这是雷达上的一个bug,并收到一个回复,建议使用最新的Xcode 7.3 Beta修复它。事实上,这个Xcode错误已经被修复,在使用Xcode 7.3运行UI测试时,这个问题不再出现,至少在我使用应用程序遇到的情况下是如此

我也遇到了这个问题,尤其是在用机器人运行UI测试时。由于前一个测试未正确关闭,因此每一个其他测试都会因此错误而失败

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

xguiapplication().terminate()

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

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

        super.setUp()

        continueAfterFailure = false
        XCUIApplication().launch()
    }

这有点多余,因为terminate命令也在
override func tearDown
函数中,但应该确保一个适当的测试环境。

我很好奇为什么这个问题没有解释就被标记为-1?这是一个真正的问题,我也不理解否决票。我也有同样的问题,但这是因为我的应用程序是菜单栏应用程序,所以我必须启用“应用程序是代理(UIElement)”。我想这不是你的案子,是吗?谢谢你!不,不幸的是,这并不能解决这个问题。在我的情况下,这个应用程序是一个常规的基于NSDocument的应用程序,具有dock状态。我很高兴地报告,至少在影响我的场景中,Xcode 7.3 final现在在没有这个解决方法的情况下修复了这个问题(我之前确认,当问题出现时,它也起到了作用)!