在Xcode 4.6及以前的版本,一直觉得单元测试这部分功能做得很鸡肋,用起来感觉很别扭。这一次Xcode 5.0默认就引入了单元测试,赶快来看看看相比以前的版本有什么提升吧!~_~

1.     首先打开上一节示例用的项目,当然,您也可以新建一个空白的项目;

2.     先看一下导航区域的工具栏,相比4.6有哪些变化,如下图所示:

不难发现,相比Xcode 4.6多了一个Show the Test Navigator(显示测试导航器)的按钮;

3.     按command+U运行单元测试……稍等几秒之后,可以在Issue Navigator(问题导航器)中看到与4.6类似的提示,如下图所示:

4.     单击Show the Test Navigator(显示测试导航器)按钮,如下图所示:

5.     在HelloWorldTests.m文件中,@end之前添加以下代码:

- (void)testExample2

{

XCTAssertTrue(1 == 1, @"just a test");

}

6.     按command+U运行单元测试……稍等几秒之后,可以在Test Navigator中看到以下测试结果:

7.     在导航区域的testExample2上右击,会显示辅助菜单,如下图所示:

在图中可以看到能够单独运行/禁用某一个单元测试~_~。

备注:如果选择test “testExample2”不难发现,其实testExample和testExample2两个单元测试都会运行,并且会在问题导航区域中显示所有测试结果,而在测试导航区域却只更新testExample2的测试状态。这一问题相信在未来Xcode的版本中会有所改善。:]

8.     下面演示一下如何对数据模型进行测试,首先在HelloWorld项目中新建一个名为DataModel的类,继承自NSObject;

9.     首先在导航区域的HelloWorld节点上右击,然后在辅助菜单中选择New File…,在弹出的对话框中选择Objective-C class,然后单击Next按钮:

10.  在下一个对话框的Class中输入:DataModel,并确认Subclass of:中选择的是NSObject,然后单击Next按钮:

11.  单击并打开DataModel.h,增加一个属性定义,调整后的代码如下:

#import <Foundation/Foundation.h>

@interface DataModel : NSObject

@property (assign, nonatomic) NSInteger myId;

@end

12.  单击并打开DataModel.m,增加init方法,将myId的默认值设置为100,调整后的代码如下:

#import "DataModel.h"

@implementation DataModel

- (id)init

{

if ((self = [super init])) {

_myId = 100;

}

return self;

}

@end

13.  单击导航区域工具条中的Show the Test Navigator(显示测试导航器)按钮,然后右击HelloWorldTests,在弹出的辅助菜单中选择New Test Class…:

14.  在下一个对话框的Class中输入:DataModelTests,并确认Subclass of:中选择的是XCTestCase,然后单击Next按钮,并直接单击下一个对话框中Create按钮:

15.  单击上图中的DataModelTests节点,首先引入DataModel的头文件:

#import "DataModel.h"

16.  删除testExample方法,然后在@end之前添加以下代码:

- (void)testModelDefaultId

{

DataModel *model = [[DataModel alloc]init];

XCTAssertEquals(model.myId, 100, @"The default id should be 100");

}

17.  按command+U运行单元测试……

搞定收工!

有关单元测试的好处,本文就不赘述了哈,相信有过Java或.Net开发经验的朋友都深有感触了。进一步了解iOS7中的单元测试,可以参阅苹果官方文档。

著作权声明:本文由http://blog.csdn.net/liufan321或者http://www.cnblogs.com/liufan9原创,欢迎转载分享。请尊重作者劳动,转载时保留该声明和作者博客链接,谢谢!

iOS7初体验(2)——单元测试的更多相关文章

  1. iOS7初体验(1)——第一个应用程序HelloWorld

    iOS7 Beta已经发布了,迫不及待地下载了iOS 7及Xcode 5并体验了一下.先做一个简单的Hello World看看都有哪些变化吧. 1. 启动Xcode5-DP: 2. 从菜单选择File ...

  2. iOS7 初体验

    iOS7 初体验 近日来由于iOS7的发布,引来业界的各种吐槽. 为了体验一把,我已经把iPhone5刷成了iOS7,也下载Xcode5-DP并进行了测试.我想说的是iOS7与Xcode5-DP中新增 ...

  3. iOS7初体验(3)——图像资源Images Assets

    开始之前,首先回顾一下iOS7初体验(1)——第一个应用程序HelloWorld中的一张图,如下所示: 本文便分享一下Images.xcassets的体验~_~ 1. 打开此前使用过的HelloWor ...

  4. junit4初体验

    OK,现在我们正式开始junit4系列的整理.前面的junit38作为4的补充知道就好了,实际编码中我们以4为主.这里先来一把junit的初体验,同时也让我们来一步一步的了解下TDD的好处. ORM大 ...

  5. .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验

    不知不觉,“.NET平台开源项目速览“系列文章已经15篇了,每一篇都非常受欢迎,可能技术水平不高,但足够入门了.虽然工作很忙,但还是会抽空把自己知道的,已经平时遇到的好的开源项目分享出来.今天就给大家 ...

  6. Xamarin+Prism开发详解四:简单Mac OS 虚拟机安装方法与Visual Studio for Mac 初体验

    Mac OS 虚拟机安装方法 最近把自己的电脑升级了一下SSD固态硬盘,总算是有容量安装Mac 虚拟机了!经过心碎的安装探索,尝试了国内外的各种安装方法,最后在youtube上找到了一个好方法. 简单 ...

  7. Spring之初体验

                                     Spring之初体验 Spring是一个轻量级的Java Web开发框架,以IoC(Inverse of Control 控制反转)和 ...

  8. Xamarin.iOS开发初体验

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKwAAAA+CAIAAAA5/WfHAAAJrklEQVR4nO2c/VdTRxrH+wfdU84pW0

  9. 【腾讯Bugly干货分享】基于 Webpack & Vue & Vue-Router 的 SPA 初体验

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57d13a57132ff21c38110186 导语 最近这几年的前端圈子,由于 ...

随机推荐

  1. servlet单例多线程

    Servlet如何处理多个请求访问? Servlet容器默认是采用单实例多线程的方式处理多个请求的: 1.当web服务器启动的时候(或客户端发送请求到服务器时),Servlet就被加载并实例化(只存在 ...

  2. git 添加忽略文件

    使用github for windows客户端添加.gitignore文件:   如下图所示,在github客户端可以看到未提交的更改列表 随便选中一个文件,右链,选择ignore file. 然后会 ...

  3. Linux Shell编程(27)——子shell

    运行一个shell脚本时会启动另一个命令解释器. 就好像你的命令是在命令行提示下被解释的一样, 类似于批处理文件里的一系列命令.每个shell脚本有效地运行在父shell(parent shell)的 ...

  4. VGA IP核的制作

    今天看了本<系统晶片设计-使用NIOS>这本书,看到VGA IP核的设计不错,特移植到Cyclone III上来,试验一下效果. 顶层代码:binary_VGA.v module bina ...

  5. Spoj 7001 Visible Lattice Points 莫比乌斯,分块

    题目:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=37193   Visible Lattice Points Time L ...

  6. mipi 调试经验

    转载自http://blog.csdn.net/g_salamander/article/details/9163455 以下是最近几个月在调试 MIPI DSI / CSI 的一些经验总结,因为协议 ...

  7. 《University Calculus》-chape10-向量和空间几何学-叉积

    叉积概念的引入: 在平面中我们为了度量一条直线的倾斜状态,为引入倾斜角这个概念.而通过在直角坐标系中建立tan α = k,我们实现了将几何关系和代数关系的衔接,这其实也是用计算机解决几何问题的一个核 ...

  8. 青云QingCloud业内率先支持云端全面透明代理功能 | SDNLAB | 专注网络创新技术

    青云QingCloud业内率先支持云端全面透明代理功能 | SDNLAB | 专注网络创新技术 青云QingCloud业内率先支持云端全面透明代理功能

  9. Erasing Edges - SGU 136(构造多边形)

    题目大意:已知一个多边形上的每条边的中点,还原出来一个多边形. 分析:因为偶数是不固定的,所以可以为任意起点,奇数只有一个,可以所有中点加减算出来第一个点,然后就是简单的向量计算点的位置了...... ...

  10. oracle DG 主备切换语句整理

    今日花了一下午时间进行了Oracle DataGuard的切换练习,参考了网上好多文章,最后将一些语句进行摘录,以备以后查询使用.之后有时间会带来Oracle DG的搭建和切换全过程文章. DataG ...