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

时间:2016-02-14 01:18:24

标签: cocoa xcode-ui-testing

我第一次尝试为沙盒,基于NSDocument的OSX应用程序目标运行UI测试,我遇到了Xcode 7.2.1和7.3 beta 3的问题,其中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测试版会修复它。事实上,这个Xcode错误已得到修复,并且在使用Xcode 7.3运行我的UI测试时不再出现问题,至少在我使用我的应用程序时遇到的情况!

1 个答案:

答案 0 :(得分:2)

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

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

XCUIApplication().terminate()

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

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

        super.setUp()

        continueAfterFailure = false
        XCUIApplication().launch()
    }

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