iOS开发中的单元测试

OCUnit

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

·添加单元测试

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

单元测试图1

向已经存在的工程中添加OCUnit Logic Tests也不复杂,只需要添加一个类型为:Cocoa Touch Unit Testing Bundle的Target即可。
向已存在的工程中添加OCUnit测试

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

添加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编写测试方法。

创建一个测试用例

开发者可以自己实现无返回值,且命名规则为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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 看到文章标题的时候,你也许会问,测试不是测试妹子干的事吗?的确,测试妹子能帮助我们测试出软件的很多问题(不符合业务...
    FITZ9311阅读 18,262评论 22 107
  • 转:http://www.jianshu.com/p/d5fca0185e83 Xcode测试 前言 总算在今天把...
    测试小蚂蚁阅读 3,069评论 0 20
  • 关于iOS的UI自动化测试,是从Xcode7之后才支持的比较好,使用XCTest.framework,Xcode可...
    房小房MT阅读 5,357评论 4 13
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,174评论 19 139
  • 领导给的需求是: 关于单元测试的任务反馈: http://www.jianshu.com/p/d15a7dea0c...
    SOI阅读 4,036评论 1 34