当通过JNLP使用Jenkins时,iOS测试不会在模拟器上运行

当通过JNLP使用Jenkins时,iOS测试不会在模拟器上运行,ios,xcode,jenkins,jnlp,Ios,Xcode,Jenkins,Jnlp,我一直在尝试使用Jenkins让xcodebuild测试在远程机器上运行。我遇到了无法通过SSH启动GUI的错误,并通过JNLP启动一个从机解决了这个问题,如下所示: . 现在我得到一个新的错误: Error Domain=IDEUnitTestsOperationsObserverErrorDomain Code=3“由于等待测试进程签入超时而取消测试…” 无论是在终端上还是通过Jenkins成功构建和运行测试,我都会遇到这些错误: iPhoneSimulator:SimVerifier返回:

我一直在尝试使用Jenkins让xcodebuild测试在远程机器上运行。我遇到了无法通过SSH启动GUI的错误,并通过JNLP启动一个从机解决了这个问题,如下所示: . 现在我得到一个新的错误:

Error Domain=IDEUnitTestsOperationsObserverErrorDomain Code=3“由于等待测试进程签入超时而取消测试…”

无论是在终端上还是通过Jenkins成功构建和运行测试,我都会遇到这些错误:

iPhoneSimulator:SimVerifier返回:错误域=NSPOSIXErrorDomain代码=53“模拟器验证失败。”{NSLocalizedFailureReason=无法建立到模拟器验证服务的连接,.nsLocalizedRecoverysSuggestion=确保Xcode.app安装在启用所有权的卷上,.NSLocalizedDescription=模拟器验证失败。}

iPhoneSimulator:无法连接到“com.apple.instruments.deviceservice.lockdown”(错误域=com.apple.CoreSimulator.SimError Code=146“无法在当前状态下查找:关机”

我已经确保在安装XCode的地方启用了所有权,我已经在模拟器上重置了内容和设置,我已经将plist文件移动到/Library/LaunchAgents中。我已经尝试通过谷歌搜索这些错误,但找不到任何与我的问题相关的内容。有人有其他建议吗

其他资料:

XCode版本6.2(6C131e)

日志文件:

2015-03-24 12:14:10.719 Beginning test session with Xcode 6C131e
2015-03-24 12:14:10.720 /Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild test -project proj.xcodeproj -scheme development -destination platform=iOS Simulator,name=iPad Air
2015-03-24 12:14:10.720 Testing on device: <DVTiPhoneSimulator: 0x7f8235cb3570> {SimDevice: SimDevice : iPad Air (625C9344-19B9-4F6C-B70B-8BDD3B753E17) : state={ Booted } deviceType={ SimDeviceType : com.apple.CoreSimulator.SimDeviceType.iPad-Air } runtime={ SimRuntime : 8.2 (12D508) - com.apple.CoreSimulator.SimRuntime.iOS-8-2 }}
2015-03-24 12:14:10.720 Writing testing status log to /var/folders/mx/9d2jm4sj6t54sld_9cj1bgz40000gn/T/com.apple.dt.XCTest-status/Session-2015-03-24_12:14:10-QR746X.log.
2015-03-24 12:14:10.720 Initializing test infrastructure.
2015-03-24 12:14:10.749 Creating the connection.
2015-03-24 12:14:10.749 Listening for proxy connection request from the test bundle (all platforms)
2015-03-24 12:14:10.749 Resuming the connection.
2015-03-24 12:14:10.749 Test connection requires daemon assistance.
2015-03-24 12:14:10.933 Checking test manager availability..., will wait up to 120s
2015-03-24 12:14:10.936 testmanagerd handled session request.
2015-03-24 12:14:10.936 Waiting for test process to launch.
2015-03-24 12:14:15.951 Launch session started, setting a disallow-finish-token on the run operation.
2015-03-24 12:14:15.952 Waiting for test process to check in..., will wait up to 120s
2015-03-24 12:14:15.979 Adding console adaptor for test process.
2015-03-24 12:16:15.956 Unable to get debug console for logging target process thread state.
2015-03-24 12:16:15.956 Test operation failure: Canceling tests due to timeout in Waiting for test process to check in...
2015-03-24 12:16:15.956 _finishWithError:Error Domain=IDEUnitTestsOperationsObserverErrorDomain Code=3 "Canceling tests due to timeout in Waiting for test process to check in..." UserInfo=0x7f8231c1dff0 {NSLocalizedDescription=Canceling tests due to timeout in Waiting for test process to check in...} didCancel: 1
2015-03-24 12:14:10.719使用Xcode 6C131e开始测试会话
2015-03-24 12:14:10.720/Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild-test-proj.xcodeproj-scheme-development-destination-platform=iOS模拟器,name=iPad-Air
2015-03-24 12:14:10.720设备测试:{SimDevice:SimDevice:iPad Air(625C9344-19B9-4F6C-B70B-8BDD3B753E17):状态={Booted}设备类型={SimDeviceType:com.apple.CoreSimulator.SimDeviceType.iPad-Air}运行时={SimRuntime:8.2(12D508)-com.apple.CoreSimulator.SimRuntime.iOS-8-2}
2015-03-24 12:14:10.720将测试状态日志写入/var/folders/mx/9d2jm4sj6t54sld_9cj1bgz40000gn/T/com.apple.dt.XCTest status/Session-2015-03-24:14:10-QR746X.log。
2015-03-24 12:14:10.720初始化测试基础设施。
2015-03-24 12:14:10.749创建连接。
2015-03-24 12:14:10.749侦听来自测试包的代理连接请求(所有平台)
2015-03-24 12:14:10.749恢复连接。
2015-03-24 12:14:10.749测试连接需要守护程序协助。
2015-03-24 12:14:10.933检查测试管理器的可用性…,将等待120秒
2015-03-24 12:14:10.936 TestManager处理了会话请求。
2015-03-24 12:14:10.936等待测试过程启动。
2015-03-24 12:14:15.951启动会话已启动,正在运行操作上设置不允许的完成令牌。
2015-03-24 12:14:15.952等待测试过程签入…,将最多等待120秒
2015-03-24 12:14:15.979为测试过程添加控制台适配器。
2015-03-24 12:16:15.956无法获取用于记录目标进程线程状态的调试控制台。
2015-03-24 12:16:15.956测试操作失败:由于等待测试进程签入超时而取消测试。。。
2015-03-24 12:16:15.956完成错误:错误域=IDEUnitTestsOperationsObserverErrorDomain代码=3“由于等待测试进程签入超时而取消测试…”用户信息=0x7f8231c1dff0{NSLocalizedDescription=由于等待测试进程签入超时而取消测试…}取消:1

我仍然看到错误消息,但我能够让Jenkins运行我的单元测试。以下是对我有效的步骤:

  • 重新启动远程计算机
  • 从Finder启动Xcode应用程序
  • 退出Xcode
  • 运行Jenkins测试脚本
  • 您可以通过以下步骤解决“模拟器验证失败”(代码=53)错误。 (对我来说,这个问题是由于命令行开发工具之间的冲突以及这些工具的Mac OS文件夹权限问题造成的)

    我能够通过以下方式解决问题:

  • 退出任何正在运行的Xcode、Instruments和iOS模拟器实例
  • 删除开发人员文件夹:/Library/developer
  • 删除所有Xcode安装:/Applications/Xcode.app
  • 重新启动你的Mac电脑
  • 从苹果开发者门户下载Xcode.dmg(不是从应用商店下载)
  • 重新安装Xcode
  • 启动Xcode
  • 或者,虽然不是最好的做法,但如果您想安装多个版本的Xcode,请确保在构建项目之前,从Xcode首选项/位置/命令行工具激活正确的Xcode版本

    希望这能有所帮助。

    在这里查看我的解决方案:


    问题在于,xcodebuild中的超时计数器在命令执行后立即启动,因此编译时间计入超时时间(即120秒)。

    看到完全相同的“模拟器验证失败”尝试从命令行使用xcodebuild运行测试时出错。Xcode(6C131e)的版本和内部版本号相同。对我们来说,这是在升级到Xcode 6.2后的一段时间开始的。测试过去运行良好,但我不确定测试何时开始失败,因为有人在某个时候在我们的构建框中禁用了它们。如果/当我找到解决方案时,我会在这里发布答案。如果你做了什么,我将非常感谢你也能做。结果是一个骗局对我来说。我曾经得到,现在仍然得到,错误,但是测试没有运行是因为一个完全不同的原因。我的蠢驴就是无法通过最初的错误。一旦我修复了测试运行。但是在苹果开发论坛上有一些关于这方面的操作:感谢链接!我将尝试下这些建议,并且肯定会在我更新时更新呃,找到一个解决方案。好的,我有一个解决方案!以下是对我有效的步骤:重新启动