全新的 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 的包标识符