【问题标题】:Unit tests not started with Xcode 5 and jenkins单元测试不是从 Xcode 5 和 jenkins 开始的
【发布时间】:2014-03-19 13:29:21
【问题描述】:

我已经在本地机器上设置了 jenkins。然后我创建了一个带有一个失败和一个成功的单元测试的示例应用程序。当我在终端中发出以下命令时

xcodebuild -scheme 'SampleWithTest' -sdk iphonesimulator7.0 -destination platform='iOS Simulator',OS=7.0,name='iPhone Retina (3.5-inch)' clean test

比它干净地构建项目,启动模拟器并进行测试。它应该是这样工作的。

当我通过 jenkins 运行相同的命令时,它会干净地构建项目并以 ** TEST SUCCEEDED ** 结束,而无需启动模拟器或打印出测试结果。詹金斯只是假装测试成功了。

我在本地机器上测试它。没有什么是无头、远程、源代码控制、从属、代码签名或任何可能造成任何麻烦的东西。

【问题讨论】:

  • 你有什么发现吗_?有同样的问题
  • 你在使用 jenkins 的 Xcode 插件吗?
  • @quellish 是的,使用 Jenkins 的 Xcode 插件。
  • 如果您通过 ssh 进入机器(即使来自同一台机器)并运行您的 xcodebuild 命令,您会得到相同的结果吗?如果你 ssh 进入它并以 jenkins 服务器运行的用户身份运行命令怎么办? Xcode和模拟器要求用户有可以运行window server等的账号,并且有开发者权限。您的 jenkins 用户可能没有所有这些,或者可能与 Jenkins 使用的 shell 环境设置不正确。
  • 单元测试用例在本地 Jenkins 实例中运行良好,配置与构建服务器相同,但在通过 ssh 连接的服务器中,它没有启动模拟器并显示 ** TEST SUCCEEDED ** 消息

标签: ios xcode unit-testing jenkins


【解决方案1】:

Jenkins Xcode 插件尚未更新为与 Xcode 5 和 XCTest 框架一起使用。见this issue。 Jenkins 和 Xcode 插件不理解 XCTest 输出。

此外,Xcode 5 改变了 Xcode 在运行测试时与模拟器和设备交互的方式。虽然模拟器现在有类似“无头模式”的东西,但 Xcode 插件无法访问该功能。这意味着在某些情况下,Xcode 插件看起来好像测试立即运行并退出,这是不准确的。

【讨论】:

  • 但问题不在于 xcode 插件,正如 zeiteisen 所述,当您仅使用 xcodebuild 时会出现问题。
  • zeiteisen 描述它确实与 xcodebuild 一起工作,并且在 cmets 中详细说明他正在使用用于 jenkins 的 Xcode 插件。
【解决方案2】:

众所周知,使用 Jenkins、Travis 或其他非 Apple CI 解决方案设置 Xcode 非常棘手。

单元测试支持更差,因此您应该尝试改用xctool。

相关博文here。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-26
    • 2013-09-27
    • 2013-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-27
    • 2014-03-28
    相关资源
    最近更新 更多