使用Kiwi单元测试总结

概述

本文为多篇iOS单元测试文章总述和实践总结。前部分分析iOS开发单元测试的目的和原则,后部分讲述Kiwi和OHHTTPStubs框架的基本用法及问题记录。

单元测试目的:

使重构更简单——重构后快速通过单元测试回归旧有功能

避免代码恶化——设计API考虑更全面,对提高设计和可扩展性有帮助

提供可执行的说明和文档

降低开发软件的代价——更快速地编译和修改代码,降低开发时间和风险

测试对象:

与UIView无关的类,例如:ViewModel层和工具类

待测试类的所有Public API均需要测试

不应该测试什么:

不测私有方法,私有方法数量多,修改不......

Objective-C编码规范精选

依据日常个人和团队编码习惯总结、挑选出几点Objective-C代码规范,整理出此文,持续更新。

多条规范和思路参考《禅与 Objective-C 编程艺术》一书,非常推荐一读。

命名规范

驼峰命名

属性、变量、方法(iOS中的方法,规范的名称应该是:消息)均使用小写字母开头的驼峰命名。

全局变量命名,以小写字母g开头。

static CSDataManager *gDataManager = nil; // good

static CSDataManager *dataManager = nil; // avoid

前缀

类名、协议名、枚举类型、宏统一以项目前缀......

Memory-Leaks-In-NSException

不易察觉的NSException内存泄露

前两天在Instrument扫到了一处内存泄露,和常见的Block、NSTimer、Target-Action之类循环引用无关,泄漏的call tree指向了一个属性的set的位置,在ARC下这种提示还真奇怪。

非常费解,在Demo里简单还原下事故现场:

@interface ExceptionViewCo......