写点什么

iOS 测试与集成工具总结

  • 2015 年 4 月 01 日
  • 本文字数:1136 字

    阅读完需:约 4 分钟

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:047200
用户头像

发布了 164 篇内容, 共 95.1 次阅读, 收获喜欢 382 次。

关注

评论

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

架构师训练营 - 第 5 周学习总结

红了哟

架构师训练营 - 第五周 - 作业

韩挺

用一致性Hash算法的实现负载均衡(Kotlin)

Acker飏

极客大学架构师训练营 一致性Hash算法

架构师训练营学习总结——缓存与消息队列【第五周】

王海

极客大学架构师训练营

【week05】总结

chengjing

产业区块链发展迎来爆发期

CECBC

产业区块链 系统稳定性 应用安全性 信任的机器

Week5 学习总结

wyzwlj

极客大学架构师训练营

week5-总结 技术选型

a晖

一篇文章深入理解分布式锁

itlemon

redis 分布式锁

20道Redis面试题(含答案)面试官会问的我都找到了

你是人间四月天

redis 面试 Spring Cloud redis6.0.0 Redis项目

程序员是这样解读《隐秘的角落》

陈东泽 EuryChen

学习 程序员 隐秘的角落

第五周总结

武鹏

最右JS2Flutter框架——开篇(一)

刘剑

flutter 大前端 探索与实践

搞懂Spring事务失效的8大原因,轻轻松松面试过关

码哥小胖

Java spring Spring Boot

打造Redis分布式环境下的银弹?我觉得Redisson比Redlock更胜一筹

码农月半

Java redis redis高可用 Redis项目

week5

Geek_2e7dd7

区块链技术打通医疗应用场景

CECBC

行业资讯 生产 区块链技术 生活服务

Uniapp使用GoEasy实现websocket实时通讯

GoEasy消息推送

uni-app websocket 即时通讯

为你的 SpringBoot 服务生成或推送各平台的部署包

华宇法律科技

Docker k8s springboot

正确的做事比做正确的事更重要

魔曦

架构师 极客大学架构师训练营

架构师训练营 - 第五周 - 学习总结

韩挺

Spring Boot 多数据源 Redis 配置

南南

redis 面试 Spring Boot Redis作者

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

牛牛

极客大学架构师训练营 命题作业 一致性Hash算法

阿里内推面试,挂在了一道简单的问题上…

小新

Java 阿里巴巴 程序员 架构 面试

老龄化时代的人机共生:京东数科以AI机器人推动产业增长

脑极体

week5 学习总结

Geek_2e7dd7

这份架构PDF如何得到百度、洋码头、饿了么CTO等大咖联袂推荐?

小新

Java 架构 面试 队列

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

红了哟

码农必备SQL高性能优化指南!35+条优化建议立马get

码哥小胖

MySQL SQL语法 sql查询 sql

公司制的黄昏:区块链重构商业世界

CECBC

区块链思维 裂变 契约 激励

Week5 一致性hash算法

TiK

iOS测试与集成工具总结_测试_徐川_InfoQ精选文章