使用OCUnit测试框架iOS单元测试框架
原则上,是否使用测试框架都不会影响单元测试结果,但是“工欲善其事,必先利其器”使用单元测试框架更便于我们测试和分析结果。
主要的iOS单元测试框架有:
OCUnit,是开源测试框架,与Xcode工具集成在一起使用非常方便,测试报告以文本形式输出到输出窗口;
GHUnit,是开源测试框架,它可以将测试报告以应用形式可视化输出到设备或模拟器上,也可以以文本形式输出到输出窗口;GHUnit可以测试OCUnit编写的测试用例;
OCMock,是开源测试框架,它主要为测试提供Mock对象(伪对象)。
添加OCUnit到工程
添加OCUnit到工程中有两种方法,一种是在创建工程时添加,勾选“include Unit Tests”;另一种是在现有工程中添加“Cocoa Touch Unit Testing Bundle”Target来实现。下面我们详细介绍这两种添加过程。
1、创建工程时候勾选“include Unit Tests”
该种方式添加的单元测试属于应用测试(Application Testing)。在创建一个工程时,如果采用“Single View Application”模板,在选项中勾选“include Unit Tests”即可在工程中添加OCUnit框架。
工程创建完,在导航面板中会多一个PITaxTests组(<工程名>Tests),包含PITaxTests测试类。在右边的Target栏中多了一个PITaxTests Target。
但是打开Scheme列表还只有一个PITax,这是我们需要注意的。运行它可以通过:选择菜单Product→Test或工具栏中Test按钮(下拉Run按钮选择)或快捷键command+U等几种方式。
如果打开Frameworks组会发现添加了SenTestingKit.framework,SenTestingKit.framework就 是OCUnit框架。因为单元测试框架一般命名为xUnit,如Java的单元测试框架是JUnit,.NET单元测试框架是NUnit等,OCUnit 是Objective-C单元测试框架之意。
2、现有工程中添加Target实现
该种方式添加的单元测试,属于逻辑测试(Logic Testing)。在一个现有工程中,选择菜单File→New→Target…,选择模板iOS→Other中的 “Cocoa Touch Unit Testing Bundle”。
点击Next按钮,在Product Name项目中输入LogicTest,创建完成后,在导航面板中多出了一个LogicTest组,包含LogicTest测试类。在右边的Target栏中多了一个LogicTest Target。
与上一种添加方式不同的是,在Scheme列表中会添加一个LogicTest,这也是我们需要注意的,这也是应用单元测试和逻辑单元测试的另一个 不同之处。运行它需要选择Scheme中LogicTest的iPhone 6.0 Simulator(或iPad 6.0 Simulator)运行,但是不能选择iOS Device,逻辑单元测试只能在模拟器中运行。然后再选择菜单Product→Test、工具栏中Test按钮(下拉Run按钮选择)和快捷键 command+U等几种方式运行。
无论那种方式添加,默认生成的测试类基本都是一样的,下面代码是默认生成的LogicTest测试类中的LogicTest.h和LogicTest.m文件。
- //
- // LogicTest.h
- // LogicTest
- //
- #import <SenTestingKit/SenTestingKit.h>
- @interface LogicTest : SenTestCase
- @end
- //
- // LogicTest.m
- // LogicTest
- //
- #import “LogicTest.h”
- @implementation LogicTest
- - (void)setUp
- {
- [super setUp];
- // Set-up code here.
- }
- - (void)tearDown
- {
- // Tear-down code here.
- [super tearDown];
- }
- - (void)testExample
- {
- STFail(@”Unit tests are not implemented yet in LogicTest”);
- }
- @end
作为OCUnit测试类需要引入<SenTestingKit/SenTestingKit.h>头文件,并继承 SenTestCase父类。testExample方法是一般的测试方法,方法名必须test开头,测试方法的个数没有限制,方法中STFail是 OCUnit框架定义的一个宏,是无条件断言失败,实际使用时候要修改这个方法中的代码。
在m文件中需要重新方法setUp和tearDown,我们自己编写的测试类一样,setUp方法是初始化方法,tearDown方法是释放资源的 方法,setUp和tearDown方法在每次调用测试方法之前和之后调用,因此在测试类运行的生命周期中这两个方法可能多次运行,它们的时序图
相关推荐
iOS开发------Widget(Today Extension)插件化开发1
资源名称:iOS开发视频教程资源目录:【】iOS开发视频教程-第01讲-iOS历史介绍【】iOS开发视频教程-第02讲-XCode安装【】iOS开发视频教程-第03讲-UIView_PPT【】iOS开发视频教程-第04讲-UILabel【】iOS开发视频教程-...
iOS开发------程序实现国际化Localizable - iPhone手机开发技术文章 - 红黑联盟1
iOS开发进阶篇-成为iOS开发高手-源码
iOS开发进阶篇-成为一个iOS开发高手(PDF)
iOS 开发框架 EasyIOS-Swift ,EasyIOS 开源至今已经1周年,全新Swift版本今日发布,支持利用HTML来开发IOS应用,支...
UI第一章:无限互联iOS开发教程课件-- iPhone开发入门
ARKit,iOS11之后引入全新的框架,允许开发者轻松地为 iPhone 和 iPad 创建 与伦比 的增强现实体验。通过将虚拟对象和虚拟信息同 户周围的环境相互融合,ARKit 使得应用跳出屏幕的限制,让它们能够以全新的方式与...
IOS开发-Swift-基础知识学习笔记
之前遇到的需求,ios上没有类似的实现。搞了好久在网上搜了很多资料都不能解决最后找到了一个c/c++的底层源码,才实现了最后整理了下上传了。是个ios的demo很详细你定能看懂的。运行在xcode环境下,关键算法的文件是...
iOS开发之Objective-C语法快速参考(PDF文档).
iOS-CoreML-Yolo在Apple的CoreML框架上使用Tiny YOLO v1模型实现对象检测
iOS应用开发攻略--文字版.pdf 个人收集电子书,仅用学习使用,不可用于商业用途,如有版权问题,请联系删除!
苹果开发- iOS-邓白氏-编码申请
资源名称:iPhone开发入门到精通视频教程资源目录:【】iOS开发源码系列---工具【】iOS开发源码系列---应用【】iOS开发源码系列---游戏【】iOS开发源码系列---类库与框架【】iOS开发真机测试与发布【】iOS开发视频...
iOS开发基础教程-源代码.rar
思科 cisco ios 镜像 C3640-JK.BIN 文件由多位CCIE水平人员测试使用后拷贝,dy下可用
iOS语音开发libopencore-amrwb和libopencore-amrnb最新适用库,该版本支持x86_64、i386、armv7、armv7s、arm64cpu架构 使用方法:拖入项目 方便自己下载,想用各位老铁也下吧
iOS实例开发源码——iliu-ios-cocos2d-viking-cba07f8.zip