iOS开发中的单元测试

OCUnit

OCUnit是Xcode 4.x集成的单元测试框架,OCUnit中的测试分为两类,一类称为Logic Tests,另一类称为Application Tests。Logic Tests更倾向于所谓的白盒测试,用于测试工程中较细节的逻辑;Application Tests更倾向于黑盒测试,或接口测试,用于测试直接与用户交互的接口。

·添加单元测试

OCUnit是Xcode集成的,所以其与工程结合理应是最好的。添加到工程中的成本也理应最低。使用XCode创建新工程的流程中就有一个Include Unit Tests的选项,新的工程就会自动生成一个Logic Tests。

iOS开发中的单元测试_第1张图片
单元测试图1

向已经存在的工程中添加OCUnit Logic Tests也不复杂,只需要添加一个类型为: Cocoa Touch Unit Testing Bundle的Target即可。
iOS开发中的单元测试_第2张图片
向已存在的工程中添加OCUnit测试

向已有的额工程中添加一个测试Target时,XCode会自动生成一个Scheme,运行单元测试用例和Build原工程需要切换不同的Scheme。如果认为切换Scheme非常麻烦,也可在添加Target之前,在 Manage Scheme菜单中取消 Autocreate schemes
iOS开发中的单元测试_第3张图片

iOS开发中的单元测试_第4张图片
添加Target不创建Scheme

·创建测试用例

OCUnit的测试用例最常用的方法有三个

1.- (void)setUp:每个test方法执行前调用

2.- (void)tearDown:每个test方法执行后调用

3.- (void)testXXX:命名为XXX的测试方法

添加Target之时XCode已经自动创建了一个测试用例:UITestDemoTests,其中UnitTestDemo是工程的名字,该类中已经包含了setUp,tearDown和testExample三个方法

通过command+n,选择Objective-C test case class创建一个新的测试用例。通过Xcode创建的测试用例类死一个继承自SenTestCase(OCUnit由SEN:TE公司开发,因此基类命名为SenTestCase)的空类,需要模仿UnitTestDemoTests编写测试方法。

iOS开发中的单元测试_第5张图片
创建一个测试用例

开发者可以自己实现无返回值,且命名规则为testXXX的实例方法,并且使用框架提供的大量断言方法。

LogicTests与Application Tests的区别主要在setUp方法,Logic Tests只需在setUp方法中初始化一些测试数据,而Application Tests需要在setUp方法中获取主应用的AppDelegate,供test方法调用。

值得注意的是,OCUnit的test bundle是侵入主应用的,因此在使用过程中要十分注意,不要让单元测试的资源,造成诡异的Bug。

·运行测试

由于OCunit是集成在Xcode中的框架,因此在Xcode中运行也比较方便。切换到单元测试的scheme(如与工程公用的scheme则无需切换),Product->Test(或直接使用快捷键Command+U),框架会自动查找所有工程中SenTestCase的子类,运行其中全部命名类似testXXX的无返回值方法。

·测试反馈

OCUnit的失败方法会通过Console和Xcode Issues两个位置反馈,通过Xcode Issues可以直接定位到出现错误的单元测试代码行。Issue的提示信息就是在单元测试断言方法中定义的description。

未完 本文摘自

http://www.cocoachina.com/industry/20130724/6667.html

你可能感兴趣的:(iOS开发中的单元测试)