`

iOS开发那些事--OCUnit测试框架

阅读更多

使用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框架。

 

1

 

工程创建完,在导航面板中会多一个PITaxTests组(<工程名>Tests),包含PITaxTests测试类。在右边的Target栏中多了一个PITaxTests Target。

 

2

 

但是打开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”。

 

3

 

点击Next按钮,在Product Name项目中输入LogicTest,创建完成后,在导航面板中多出了一个LogicTest组,包含LogicTest测试类。在右边的Target栏中多了一个LogicTest Target。

 

4

 

与上一种添加方式不同的是,在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文件。

 

  1. //  
  2.   
  3. //  LogicTest.h  
  4.   
  5. //  LogicTest  
  6.   
  7. //  
  8.   
  9. #import <SenTestingKit/SenTestingKit.h>  
  10.   
  11.    
  12.   
  13. @interface LogicTest : SenTestCase  
  14.   
  15.    
  16.   
  17. @end  
  18.   
  19. //  
  20.   
  21. //  LogicTest.m  
  22.   
  23. //  LogicTest  
  24.   
  25. //  
  26.   
  27. #import “LogicTest.h”  
  28.   
  29.    
  30.   
  31. @implementation LogicTest  
  32.   
  33.    
  34.   
  35. - (void)setUp  
  36.   
  37. {  
  38.   
  39. [super setUp];  
  40.   
  41. // Set-up code here.  
  42.   
  43. }  
  44.   
  45.    
  46.   
  47. - (void)tearDown  
  48.   
  49. {  
  50.   
  51. // Tear-down code here.  
  52.   
  53. [super tearDown];  
  54.   
  55. }  
  56.   
  57.    
  58.   
  59. - (void)testExample  
  60.   
  61. {  
  62.   
  63. STFail(@”Unit tests are not implemented yet in LogicTest”);  
  64.   
  65. }  
  66.   
  67.    
  68.   
  69. @end  


作为OCUnit测试类需要引入<SenTestingKit/SenTestingKit.h>头文件,并继承 SenTestCase父类。testExample方法是一般的测试方法,方法名必须test开头,测试方法的个数没有限制,方法中STFail是 OCUnit框架定义的一个宏,是无条件断言失败,实际使用时候要修改这个方法中的代码。

 

在m文件中需要重新方法setUp和tearDown,我们自己编写的测试类一样,setUp方法是初始化方法,tearDown方法是释放资源的 方法,setUp和tearDown方法在每次调用测试方法之前和之后调用,因此在测试类运行的生命周期中这两个方法可能多次运行,它们的时序图

5

分享到:
评论

相关推荐

    OCUnit单元测试学习

    OCUnit是Objective-C编程语言中的一种单元测试框架,它是Xcode集成开发环境(IDE)的一部分,特别是在iOS 7及更高版本中成为标准的测试工具。OCUnit源于SUnit,是Smalltalk语言中的一个单元测试框架。在iOS和macOS的...

    基于测试驱动的iOS开发

    首先,文档提到了OCUnit测试框架。OCUnit,也被称为SenTestingKit,是苹果公司为Objective-C语言开发提供的一个单元测试框架,它是用于测试iOS应用的最早和最常用的测试工具之一。OCUnit支持Xcode开发环境,可以方便...

    ios-项目框架搭建.zip

    在iOS开发中,项目框架搭建是开发者初期阶段必须掌握的一项基础技能。"ios-项目框架搭建.zip"这个压缩包很可能是为了帮助初学者快速理解如何构建一个基本的iOS应用程序项目结构。下面,我们将深入探讨iOS项目框架...

    iphone混合object-C++自动测试框架

    对于iOS应用,常见的自动测试框架有XCTest、OCUnit(被XCTest替代之前的测试框架)以及第三方库如Specta和KIF。 4. **混合编程**:混合使用Objective-C和C++可以实现更灵活的代码组织。Objective-C可以用于高层逻辑...

    豆瓣IOS自动化测试实战

    Ynm3k已经广泛应用于豆瓣的iOS开发过程中,具体步骤如下: 1. **下载Ynm3k**:通过GitHub获取Ynm3k的源代码。 2. **初始化环境**:运行`setup.sh`脚本来配置环境。 #### 七、总结 豆瓣通过采用自动化测试技术和...

    图书iOS开发

    - **XCTest框架**:XCTest是Xcode自带的一套强大的测试框架,它为开发者提供了丰富的API来编写高质量的测试用例。 #### 测试流程详解 - **创建测试目标**:为了执行测试,首先需要创建一个测试目标。这通常是在...

    IOS应用源码之alect-Digital-Egg-Drop-a1b6091.zip

    8. **测试和调试**:XCTest或OCUnit是iOS的单元测试框架,源码中可能包含测试用例,以确保应用功能的正确性。 通过以上分析,我们可以学习到iOS应用的开发流程、设计模式、编程实践,以及如何将物理知识融入到移动...

    IOS应用源码——pankaku-pankia-170f07e.zip

    在iOS开发领域,源码分析是提升技术能力的重要途径。本次我们将深入探讨"pankaku-pankia-170f07e"这一特定版本的iOS应用源码,从中提取出关键的技术知识点,帮助开发者理解并学习iOS应用的架构设计、编程实践以及...

    ios自动化测试实践和经验

    - **xUnit框架**:引入YUItest作为测试框架,支持testSuite、testCase等,同时兼容YUItest的事件机制。 - **UI识别**:通过Finder封装UI Automation的API,提供类似于Selenium的接口,简化UI元素的定位和操作。 -...

    IOS应用源码之akosma-fontbrowser-1053a20.zip

    在iOS开发领域,源码学习是提升技术能力的重要途径。今天我们将深入探讨一个名为"akosma-fontbrowser-1053a20"的开源项目,它是一个专门用于字体浏览的应用程序。通过对这个项目的源码分析,我们可以了解到iOS应用...

    Xcode Server 实现 iOS 移动应用的自动化测试与持续集成

    XCTest是Xcode内置的测试框架,基于OCUnit开发,支持单元测试、界面测试等。开发者可以在Xcode中创建测试用例,通过UIAutomation或者Xcode Server来执行异步测试,如对blocks的操作进行异步测试,同时也可以通过...

    【Creating New Expressive Social Mediums on the iPhone】[PDF] [iPhone/iPad/iOS]

    对于Objective-C语言,OCUnit是最常用的单元测试框架之一。自2008年发布的iPhone SDK 2.2版本起,OCUnit就被包含其中,方便开发者进行单元测试的实施。 ### OCUnit基础 OCUnit是基于SenTestCase类构建的,这是一个...

    IOS应用源码之【框架】Google Toolbox for Mac.rar

    其次,GTM提供了`GTMUnitTesting`,这是一个测试支持库,它扩展了Xcode自带的OCUnit测试框架,增加了如测试宏、测试计时器等实用功能,让单元测试更加强大且易于编写。这对于确保代码质量、降低维护成本至关重要。 ...

    《iOS6开发指南》精彩书摘

    16. **基于测试驱动的iOS开发**:介绍了测试驱动开发流程和单元测试框架,如OCUnit、GHUnit和OCMock。 17. **性能优化**:介绍了iOS应用性能优化方法,包括内存优化、资源文件优化、延迟加载、多线程和程序编译参数...

    iOS游戏应用源代码——uffe-iDonkeyDeception-c6fabc7.zip

    在iOS开发领域,源代码的探索和学习是提升技术能力的重要途径。本篇将深入解析名为"uffe-iDonkeyDeception"的游戏应用源代码,这是一份基于c6fabc7版本的代码,专为iOS平台设计。通过分析此项目,我们可以了解到iOS...

Global site tag (gtag.js) - Google Analytics