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

全新的Xcode单元测试目标无法运行,因为;启动会话在签入之前已过期。”;,xcode,macos,unit-testing,Xcode,Macos,Unit Testing,我在Xcode中为我的macOS应用程序项目添加了一个全新的单元测试目标。它包含默认的两个文件: (目标公司名称)swift Info.plist 然而,当我运行我的测试套件时,这个全新的目标会出现错误“测试操作失败:在签入之前启动会话已过期” 完整日志为: 12:12:49.492 Xcode[10034:721978] Beginning test session MyTargetTests-3902F95F-20F9-4E6C-94EE-0BF8660D3B5A at 2017-06-

我在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
12:12:49.492 Xcode[10034:721978]在2017-06-18 12:12:49.492开始测试会话MyTargetTests-3902F95F-20F9-4E6C-94EE-0BF8660D3B5A,目标为Xcode 8E3004b(10.12.4(16E195))
12:12:49.492 Xcode[10034:721978]使用Xcode.DebuggerFoundation.Launcher.LLDB启动
12:12:49.492 Xcode[10034:894962]正在等待连接到位于/tmp/XCTest QcErkZ的unix域套接字。
12:12:59.747 Xcode[10034:721978]启动会话已开始。
12:12:59.832 Xcode[10034:721978]为测试会话3902F95F-20F9-4E6C-94EE-0BF8660D3B5A添加控制台适配器。
12:12:59.914 Xcode[10034:721978]测试过程可运行PID为19198。
12:13:02.025 Xcode[10034:721978]测试操作失败:在签入之前启动会话已过期。
12:13:02.025 Xcode[10034:721978]\u finishWithError:Error Domain=IDETestOperationsObserverErrorDomain Code=5“启动会话在签入之前已过期。”UserInfo={NSLocalizedDescription=启动会话在签入之前已过期。}取消:1
我的设置是:

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

  • sudo/usr/sbin/devtoolsecurity--enable
    -不好
  • 删除并重新创建测试目标-不好
  • 将Xcode升级到8.3-不好
  • 单独运行目标的测试-没有好处,也没有额外的日志
所以如何使单元测试目标工作?

错误消息“签入前启动会话已过期”有点让人费解。您需要公开真正的底层错误消息,您可以通过查看->调试区域->显示调试区域(如果尚未显示)访问该消息

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

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

最近,当我想用
fastlane
实现自动屏幕截图时,我遇到了这个失败。在我的例子中,出现错误是因为新创建的UITest目标是使用iOS 11.X部署目标设置的,因此没有为iPhone 4s构建32位版本。(应用程序部署目标为9.3)