乔瓦尼·洛迪,是一名来自澳大利亚的iOS开发者,最近,他对iOS平台上的单元测试工具进行了总结,也对验收测试的工具予以梳理,不仅剖析了它们的优点与缺点,还审视了支持iOS App的持续集成平台。
苹果官方工具
XCTest,是苹果于 iOS 7 以及 Xcode5 时所引入的,一个具备简单特性同时又强大的测试框架,其测试编写起来极为简易,而且遵循 xUnit 风格,它的优点在于与 Xcode 深度整合,设有专门的 Test 导航栏,可是由于受限于官方测试 API,所以功能并非十分丰富。
苹果所提供的 UI 自动化测试框架是 UIAutomation,测试借助 Javascript 来编写,然而使用起来存在些许乏味之感。
体现于苹果,对持续集成的支持之上。我们能够配置 Xcode Bots,用以设置触发器。通过该触发器替我们运行测试,或者自动把代码上传至服务器上。
单元测试的开源库
于开源社区当中,众人对于新事物接纳得极为迅速,某些优良之物时常以病毒性的态势进行扩散。iOS开源社区亦是如此这般,举例来说,其测试编写的趋向乃是采用xSpec风格,而这是从Ruby测试库RSpec那里借鉴而来的。
猕猴桃是对XCTest的完整替换,采用xSpec风格来编写测试,猕猴桃带有自身的一套工具集,涵盖期望、,甚至还支持异步测试。
虽说 Specta 跟 Kiwi 在功能之上有着相似之处,然而于架构层面却是极为不同的,Kiwi 着重于功能的整合,然而 Specta 却是着重于模块化的,它自身仅仅是专心致力于运行测试,而把模拟、匹配等之类的功能交付给第三方,下面这些是一些开源测试组件,它们能够跟 Specta 以及 Kiwi 框架一起搭配使用:
Quick,是个借助Swift开发而成的全新测试框架,针对以Swift编写的App测试极为友好,它另外还有个用于编写匹配模式的Nimble库。
验收测试的开源库

KIF,也就是Keep It Functional,它是那种用Objective - C编写而成的用户界面测试框架,KIF tester借助了私有API去知晓App里的视图层级,其缺点在于运行速度比较慢。
Subliminal是一款框架,它与XCTest集成,不同于KIF之处在于,它基于UIAutomation编写,目的是向开发者隐藏UIAutomation里一些复杂的细节,然而它最后更新日期是2014年2月,或许已停止更新。
一款名为Calabash的测试工具,是由跨平台开发工具Xamarin推出的,它运用BDD风格去编写验收测试,其优点在于支持跨平台,不过这需要使用不同的库,而且它声明式的测试风格极为容易读写,缺点则是不够稳定,并且运行速度比较慢。
持续集成平台
这里所列出的持续集成工具,皆是基于云平台的,这是由于若要自己搭建像Jenkins这般的持续集成环境,其代价是高昂的。
下面的列表是目前支持 iOS 的主流 CI 平台。
它们间的不同在于价格、配置工作,以及上手难易程度。
当然了,这篇文章所提及的工具并非是全部内容,要是你对iOS的测试以及集成有着兴趣,那么能够到此处留言并且和作者展开交流。