全新的 Xcode 单元测试目标无法运行,因为“启动会话在签入前已过期”。

Posted

技术标签:

【中文标题】全新的 Xcode 单元测试目标无法运行,因为“启动会话在签入前已过期”。【英文标题】:Brand new Xcode unit test target cannot run because "Launch session expired before checking in." 【发布时间】:2017-06-18 11:32:51 【问题描述】:

我在 Xcode 中的 macOS 应用程序项目中添加了一个全新的单元测试目标。它包含默认的两个文件:

(目标名称).swift Info.plist

但是,当我运行我的测试套件时,这个全新的目标因错误“测试操作失败:启动会话在签入前已过期”而中断。

完整的日志是:

12:12:49.492 Xcode[10034:721978] Beginning test session MyTargetTests-3902F95F-20F9-4E6C-94EE-0BF8660D3B5A at 2017-06-18 12:12:49.492 with Xcode 8E3004b on target <DVTLocalComputer: 0x7fcc3cf024d0 (My Mac | x86_64)> (10.12.4 (16E195))
12:12:49.492 Xcode[10034:721978] Launching with Xcode.DebuggerFoundation.Launcher.LLDB
12:12:49.492 Xcode[10034:894962] Waiting for connection to unix domain socket at /tmp/XCTest-QcErkZ.
12:12:59.747 Xcode[10034:721978] Launch session started.
12:12:59.832 Xcode[10034:721978] Adding console adaptor <IDEConsoleAdaptor: 0x7fcc2cd44d00 'target'> for test session 3902F95F-20F9-4E6C-94EE-0BF8660D3B5A.
12:12:59.914 Xcode[10034:721978] Test process runnable PID is 19198.
12:13:02.025 Xcode[10034:721978] Test operation failure: Launch session expired before checking in.
12:13:02.025 Xcode[10034:721978] _finishWithError:Error Domain=IDETestOperationsObserverErrorDomain Code=5 "Launch session expired before checking in." UserInfo=NSLocalizedDescription=Launch session expired before checking in. didCancel: 1

我的设置是:

Mac Mini 2011 年中 macOS 10.12.4 Xcode 8.3(也尝试使用 Xcode 8 - 不好)

我试过了:

sudo /usr/sbin/DevToolsSecurity --enable - 不好 删除并重新创建测试目标 - 不好 将 Xcode 升级到 8.3 - 不好 自己运行目标的测试 - 不好,也没有额外的日志

那么... 如何使单元测试目标工作?

【问题讨论】:

【参考方案1】:

错误消息“启动会话在签入前已过期”有点牵强。您需要公开真正的底层错误消息,您可以通过 View -> Debug Area -> Show Debug Area 访问(如果尚未显示)。

在我的情况下,问题是 libswiftswiftononesupport.dylib 没有链接到我自己的 macOS 应用程序中的某些库(找不到 dyld 图像)。这个解决方案有点奇怪,也很费力,但它确实有效:

我将所有动态库目标替换为框架目标 我在框架目标中启用了“始终嵌入 Swift 标准库” 我没有在任何主机应用程序中嵌入框架 - 我为此选项选择了“无”。

【讨论】:

【参考方案2】:

我最近在想使用 fastlane 实现自动屏幕截图时遇到了这个问题。在我的情况下,发生错误是因为新创建的 UITest 目标是使用 ios 11.X 的部署目标设置的,因此没有为 iPhone 4s 构建 32 位版本。 (应用部署目标是 9.3)。

【讨论】:

以上是关于全新的 Xcode 单元测试目标无法运行,因为“启动会话在签入前已过期”。的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 8 单元测试错误:无法确定 TEST_HOST 的包标识符

如何在 XCode4 中运行单元测试而无需切换到 UnitTest 配置文件/目标?

如何在 Xcode 7 中动态更改单元测试的目标?

Xcode 4:为啥我不能将头文件添加到单元测试目标?

Xcode 4.2,无法运行单元测试

Xcode 7.2:无法在 iPhone 6s 上运行单元测试