写点什么

iOS 测试与集成工具总结

2015 年 4 月 01 日

Giovanni Lodi 是来自澳大利亚的一名 iOS 开发者,最近他总结了iOS 平台上单元测试、验收测试的工具,分析了它们的优缺点,以及支持iOS App 的持续集成平台。

苹果官方工具

XCTest 是苹果在 iOS 7 和 Xcode5 引入的一个简单而强大的测试框架,它的测试编写起来非常简单,并且遵循 xUnit 风格。XCTest 的优点是与 Xcode 深度集成,有专门的 Test 导航栏,但因为受限于官方测试 API,因此功能不是很丰富。

UIAutomation 是苹果提供的 UI 自动化测试框架。测试使用 Javascript 编写,但是使用起来有些乏味。

苹果对持续集成的支持,则体现在 Xcode Bots 上。我们能配置 Xcode Bots 来设置触发器,来替我们运行测试或自动将代码上传到服务器上。

单元测试的开源库

在开源社区里,大家对新事物接受得很快,一些好的东西也经常病毒性的扩散。iOS 开源社区也是这样,比如,它的测试编写趋势是使用 xSpec 风格,这是从 Ruby 测试库 RSpec 借鉴而来的。

Kiwi 是对 XCTest 的一个完整替代,使用 xSpec 风格编写测试。Kiwi 带有自己的一套工具集,包括 expectations mocks stubs ,甚至还支持异步测试

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 的测试和集成感兴趣,可以到这里留言和作者交流。

2015 年 4 月 01 日 01:046973
用户头像

发布了 134 篇内容, 共 89.4 次阅读, 收获喜欢 375 次。

关注

评论

发布
暂无评论
发现更多内容

数字货币交易所系统搭建源码|交易所开发公司

WX13823153201

数字货币交易所系统搭建

Mybatis进阶之基础CRUD

不才陈某

mybatis springboot

实战案例丨使用云连接CC和数据复制服务DRS实现跨区域RDS迁移和数据同步

华为云开发者社区

迁移 灾备 数据复制 云连接 数据同步

Java中强、软、弱、虚四种引用详解

古月木易

Java

【运维探讨】RPA落地实践,提升IT运维工作效能!

嘉为蓝鲸

RPA 运维自动化 标准化 系统运维 流程

架构设计复杂度来源

escray

学习 从零开始学架构 架构师预科班

为什么阿里巴巴的程序员成长速度这么快,看完他们的内部资料我明白了

Java迁哥

Java 阿里巴巴 程序员 成长 笔记

架构师训练营 - 命题作业 第 12周

铁血杰克

极客大学

java安全编码指南之:Mutability可变性

程序那些事

Java java安全编码 编码指南 可变性

分析HiveQL 生成的MapReduce执行程序

任小龙

手机没网了,却还能支付,这是什么原理?

楼下小黑哥

支付宝 微信支付 支付

JDK8 Unsafe.java 源码

Darren

源码 并发 CAS 代码注释 unsafe

Java创建对象的方法有哪些?

奈学教育

Java

Docker 网络模式详解及容器间网络通信

哈喽沃德先生

Docker 容器 微服务 容器技术 容器化

usdt支付跑分系统开发|区块链跨境入金系统搭建

WX13823153201

区块链钱包开发方案|多币种钱包搭建app

WX13823153201

区块链钱包开发

CPU中的程序是怎么运行起来的(预告篇)

良知犹存

cpu

JVM中unsafe.cpp源码

Darren

c++ 源码 JVM unsafe

【API进阶之路】破圈,用一个API代替10人内容团队

华为云开发者社区

内容 编辑 API 华为云 文本摘要

2019年我最喜欢的三款数码产品。

徐说科技

手机 苹果

拥抱K8S系列-02-服务器部署应用和docker部署应用区别(nginx篇)

张无忌

nginx Docker 运维

一条龙!CI / CD 、打造小团队前端工程化服务

久违

Vue 前端 jenkins React 前端工程化

usdt承兑支付系统开发|usdt跑分系统搭建

WX13823153201

USDT承兑支付系统开发

ArCall远比你想象的要强大的多

anyRTC开发者

WebRTC 在线教育 直播 RTC 安卓

高效程序员的45个习惯:敏捷开发修炼之道(7)

石云升

敏捷开发 晨会

拥抱K8S系列-01-CentOS7安装docker

张无忌

Docker centos 运维

vivo商城前端架构升级-总览篇

vivo互联网技术

node.js Vue 前端 架构设计

Java中强、软、弱、虚四种引用详解

奈学教育

Java

LR.JAVA平台商业可视化大屏(BI)设计演示

力软.net/java开发平台

软件开发 BI 数据可视化 Java 分布式

面经手册 · 第9篇《队列是什么?什么是双端队列、延迟对列、阻塞队列,全是知识盲区!》

小傅哥

数据结构 小傅哥 队列 ArrayDeque

Java创建对象的方法有哪些?

古月木易

Java

InfoQ 极客传媒开发者生态共创计划线上发布会

InfoQ 极客传媒开发者生态共创计划线上发布会

iOS测试与集成工具总结-InfoQ