XCUIApplication().launch() 永远不会完成

XCUIApplication().launch() never completes

我第一次尝试 运行 UI 测试沙盒、基于 NSDocument 的 OSX 应用程序目标,我遇到了两个问题 Xcode 7.2.1 和 7.3 beta 3 其中 XCUIApplication().launch() 调用在设置阶段卡住并最终超时并显示以下错误消息,尽管应用程序实际上处于 运行nable 状态并且可以正常录制测试步骤等

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

我没有以任何方式自定义测试的设置阶段。相关的启动调用如下所示:

let app = XCUIApplication() app.launch()

有什么想法吗?有没有办法强制将新状态传递给 XCUIApplication 实例,或者发送通知或它在代理应用程序中侦听的任何东西?

我可以在这个开发者论坛 post 上看到(并且我自己也发表了评论)看起来是同一个问题:https://forums.developer.apple.com/thread/30390

注意: 我将此报告为 Radar 上的一个错误,并收到回复,建议后期的 Xcode 7.3 测试版之一将修复它。事实上,此 Xcode 错误已得到修复,当 运行 使用 Xcode 7.3 测试我的 UI 时,至少对于我的应用程序遇到的场景,问题不再出现!

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

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

XCUIApplication().terminate()

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

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

        super.setUp()

        continueAfterFailure = false
        XCUIApplication().launch()
    }

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