2017 年更新
skypecakes在评论中提到:
对于使用XCode 8 及更高版本的任何人:xctool
不再受支持,并且不起作用。
请改用xcodebuild。
原始答案(2013)
您可以查看本教程,其中解释了:
xctool
是在 Travis CI 或 Jenkins 等持续集成服务器下运行测试的绝佳选择。
为了在持续集成环境中运行测试,您必须为应用程序目标创建共享方案,并确保所有依赖项(例如 CocoaPods)都明确添加到方案中。
为此:
- 通过选择产品菜单 > 方案 > 管理方案...打开管理方案表
- 在列表中找到您的应用程序目标。确保选中工作表最右侧列中的共享复选框。
- 如果您的应用程序或测试目标包括跨项目依赖项,例如 CocoaPods,那么您需要确保它们已被配置为显式依赖项。为此:
- 突出显示您的应用程序目标并点击 Edit... 按钮以打开 Scheme 编辑表。
- 单击 Scheme 编辑器左侧面板中的 Build 选项卡。
- 单击 + 按钮并将每个依赖项添加到项目中。CocoaPods 将显示为名为 Pods 的静态库。
- 将依赖项拖到应用程序目标上方,以便首先构建它。
xcshareddata/xcschemes
现在,您将在 Xcode 项目下的目录中拥有一个新文件。
这是您刚刚配置的共享方案。
将此文件签入您的存储库,xctool 将能够在下一次 CI 构建中找到并执行您的测试。
为了获得更大的灵活性,您还可以控制 Travis 安装和调用 xctool 的方式:
language: objective-c
before_install:
- brew update
- brew install xctool
script: xctool -workspace MyApp.xcworkspace -scheme MyApp test
最后一个配置类似于其他教程中说明的方法:
一旦你链接了你的 repo,下一步就是将一个.travis.yml
文件添加到 repo 的根目录。
language: objective-c
before_script: travis/before_script.sh
script: travis/script.sh
- 首先我要告诉 Travis 这是一个 Objective-C 项目。
- 接下来,我告诉 Travis 我希望它如何针对这个 repo 执行 CI,方法是向它提供关于它应该运行哪些脚本以实际执行构建的说明。
我还提供了一些关于在运行构建之前做什么的额外说明。
将所有构建步骤直接放在 .travis.yml 文件中是很常见的,但我更喜欢在我的 git repo 的 travis 目录中的 repo 中实际创建 bash 脚本,然后只从我的 .travis 目录中引用这些脚本.travis.yml
。
这使.yml
文件既美观又小,也使我可以轻松地在本地测试 travis 构建脚本。
before_script
我们在上面的.yml
文件中给了 Travis 一个。这旨在供 Travis 代理用于下载构建过程中所需的工具。这是它的样子:
travis/before_script.sh
#!/bin/sh
set -e
brew update
brew install xctool
非常简单。我们只是使用自制软件安装xctool
在构建代理上。
所有 travis 构建代理都homebrew
预装了,但有时公式不是最新的,所以最好brew update
在尝试brew install
.
这就是我们为构建准备代理所需要做的一切。
接下来让我们看一下构建脚本本身:
travis/script.sh
#!/bin/sh
set -e
xctool -workspace MyWorkspace -scheme MyScheme build test
同样,这真的很简单。
我们首先通过要求xctool
构建我们的应用程序、指定工作区和方案来进行基本的健全性检查。
这只是检查我们没有任何编译错误。
假设成功xctool
,然后将为我们的应用程序构建和运行单元测试目标,如果需要,在 Travis 代理上启动模拟器。