我们一直在使用 Jenkins 和 Xcode 插件来运行我们的 iOS 应用程序的持续集成,包括自动执行和报告单元测试。这在 Linux 机器上使用 Jenkins 和运行 Xcode 4.6.3 的 Mac 从属设备上运行良好。
现在我们正在寻求将设置更新到 Xcode 5 以支持针对 iOS 7 并遇到以下问题。
首先,单元测试根本不会运行,因为我们使用的是 Xcode 4 中的 RunUnitTests 脚本,而 Xcode 5 不再支持该脚本。按照 Xcode 的建议,我通过使用单元设置适当的方案来解决这个问题测试目标。
然后,我将 Jenkins 作业的 Xcode 步骤配置为自定义 xcodebuild 参数,test -destination platform=${DESTINATION_PLATFORM},name=${DESTINATION_NAME},OS=${DESTINATION_OS}
以使其运行单元测试。
如果我在我自己的机器上运行 Jenkins 的 Xcode 插件在终端中运行的 xcodebuild 命令行,则单元测试会运行,但是当 Jenkins 作业运行时,它会在尝试运行单元测试时失败或挂起。
我怀疑这是因为使用 Xcode 5 和测试构建操作而不是 RunUnitTests 脚本,单元测试现在在需要交互式会话的 iOS 模拟器中运行,并且 Jenkins 从进程正在通过来自 Jenkins 主 (Linux) 的 SSH 运行。如果我使用 Jenkins 用于 SSH 的帐户登录从机,我可以看到 iOS 模拟器在单元测试应该运行时启动,但测试似乎没有运行并且作业挂起。如果我没有登录从机,Jenkins 作业将无法运行单元测试。
有没有办法让 iOS 单元测试通过 SSH 在 Jenkins 从属设备上运行,如果没有,当项目必须使用 Xcode 5 构建时,关于如何继续自动执行单元测试的任何建议?