iOS版Travis CI

最近,我想为我的应用程序实现持续集成。 我想很多人和我偶然发现了Travis CI上的objc.io文章。 不幸的是,这篇文章已经过时了,它是从2013年11月开始的。

同时,自从撰写本文以来,Facebook的xctool项目中一直在讨论xctool是否要支持Xcode8。但是,我们已经在Xcode 9上了。与此同时,已经发生了很多变化,文章已过时。

我个人认为objc.io应该不时测试他们的文章,或者至少要提到所使用的技术无效或无法正常工作。 由于他们没有更新他们的文章,我觉得我应该发布更新。

因此,基本上改变的是xctool has some new commands, for example test has been replaced by run-tests 。 此外, xctool不再构建您的项目,我们必须退回到xcodebuildxcbuild或Buck(Facebook的新项目)。

假设您知道如何使用GitHub帐户将项目链接到Travis CI,我将主要讨论.travis.yml文件。

我只强调了.travis.yml文件的一些区别。 您仍然需要在objc.io文章中添加仍然正确的其他元素。

如您所见,存在一些差异。 例如:(1)我们可以安全地将语言设置为Swift,如今,(2)应该仍然可以正常工作,但是我仍然更喜欢使用xctool

(3)完全是错误的, 这不再起作用

(4)这就是正确调用xctool ! 使用xcodebuild或您喜欢并且可能已经使用的任何其他构建系统来构建工作区。 然后使用xctool运行测试。

在第14行的摘要中,如果您将-scheme TravisExampleTests更改为-scheme TravisExampleTests ,则还可以免费运行UI测试。 这需要其他配置,因为以这种方式运行将导致断言失败: NSInternalInconsistencyException, "No target application path specified via test configuration"

我们该如何解决? 不幸的是, xctool不能运行UITests。 我们将再次使用Buck或xcodebuild 。 请记住,运行UI测试需要花费大量的配置(在方案中,在运行xcodebuild方面),因为必须有一个已启动的模拟器。

调用xcodebuild进行UI测试的示例如下:

xcodebuild test -workspace TravisExample.workspace -scheme TravisExampleUITests -destination 'platform=iOS Simulator,name=iPhone 6,OS=11.2

正如您在要点中看到的那样,自objc.io上的文章撰写以来,有很多更改。 尽管您仍然需要xcodebuildxctool 以外的任何工具来运行UI测试,但xctool不再构建 ,它仍在进行测试。

本文是否有助于您设置Travis CI环境? 然后请鼓掌发表评论给我反馈 。 谢谢!