Objc.io最新的一个发行出来了,本月完全聚焦于测试。说到测试实践,我不能说自己有着教条的态度。测试驱动开发,以及它关于“始终”在写新代码之前写测试的想法,在我的实践中从未100%地正确工作过。我认为它是一个在合适的条件下可以依赖的伟大工具,但你需要理解那些条件是什么。我认为它工作得很好的一个例子是当你理解了你要编写的函数或方法的输入和输出时。不幸的是,在我的世界里,这通常是一个例外而不是规则,所以我通常使用单元测试来完成一个完全不同的目的:验证我不会在未来回退一个错误修复。
通常,对我来说,这个方法是这样的:我会收到一个错误报告,验证问题是否存在,写一个测试来暴露缺陷,然后让这个测试变绿。当测试通过时,错误就修复了,不应再次回退,因为我会有一个闪亮的、快乐的测试来确保我不在未来做出愚蠢的事情。
当然,当缺陷发生在你的UI上时,这种方法效果并不好。如果你的iOS应用看起来像我的话,我猜你在你的视图控制器里有很多功能。在这种情况下,我非常建议你看看是否可以将有问题的代码重构到你的代码库的另一个层,或者甚至只是一个帮助对象,这样就可以更容易地围绕它写单元测试。如果失败了,你可能不得不求助于UI测试。如果这样,你做了一项巨大的好事,自己去购买Jonathan Penn关于Apple的UI Automation框架的书。
继续测试,
Aaron
我们正在阅读
- [x]在UI设计中的应用起源
- 据报道,iPhone 6已进入量产前的最后质量控制阶段
- Swift函数柯里化
- Objc.io #15:测试
- 服务器端配置文件
- 调试iOS上的文件损坏
- 最低价格竞争为平台(而非开发者)带来益处
本周控件
OLEContainerScrollView
一个智能处理多个子滚动视图并且不干扰UIKit的单元格重用功能的UIScrollView子类。 MIT许可。 |
每周速递
时间线
类似于Path iOS应用的时间线 MIT许可。 |
SpinKit-ObjC
iOS加载组件,拥有平滑惊人的动画效果。 MIT许可。 |
YLLongTapShare
适用于iOS的长按分享控件。 MIT许可。 |
JGActionSheet
一个功能丰富的iOS动作表,完全替代UIActionSheet,并增加了许多新特性
CocoaPods MIT许可。 |
SwiftAppMenuController
从Gianluca Tursi的GTAppMenuController迁移而来的类似于Facebook Paper.app的菜单,改编自Swift MIT许可。 |
ODMultiColumnLabel
渲染多列文本的UILabel替代方案,有Objective-C和Swift版本 MIT许可。 |
AFDateHelper
Swift中对NSDate的便利扩展。 MIT许可。 |
AFImageHelper
Swift中对UIImage和UIImageView的便利扩展 MIT许可。 |
AFViewHelper
Swift中对UIView的便利扩展 MIT许可。 |