iOS7初体验(2)——单元测试

在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原创,欢迎转载分享。请尊重作者劳动,转载时保留该声明和作者博客链接,谢谢!

 

转载于:https://www.cnblogs.com/snake-hand/archive/2013/06/14/3136935.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/408727.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大学计算机基础实训excel,大学计算机基础实训指导书

摘要&#xff1a;《大学计算机基础实训指导书》分为8章,内容包括第1章介绍了计算机基础知识,主要内容包括计算机的发展,计算机系统的组成,信息在计算机中的表示等;第2章介绍了操作系统基础知识,主要内容包括操作系统的发展,种类,功能,以及windows XP操作系统的使用方法,第3章介…

Python-100例(5-6) 排序斐波那契数列

前面分享的四道题目如下&#xff1a; Python-100 | 练习题 01 & 列表推导式Python-100 练习题 02Python-100 练习题 03 完全平方数Python-100 练习题 04 判断天数 这次是分享 Python-100 例的第五和第六题&#xff0c;分别是排序和斐波那契数列问题&#xff0c;这两道题目…

【Linux小技巧】开启关闭蜂鸣声

当在shell下按错键时&#xff0c;笔记本会发出滴滴滴的蜂鸣声&#xff0c;声音比较烦人&#xff0c;这里记录下关闭&开启蜂鸣声的指令: 如果指令输入后 not permitted, 请键入su 登录root权限后再执行指令 关闭蜂鸣声:rmmod pcspkr     开启蜂鸣声:modprobe pcspkr pcs…

东北农业大学大学计算机基础作业答案,大学计算机基础实践教学改革的研究

针对目前大学计算机基础实践教学中存在的问题,提出了教学内容、教学方法、教学模式、考试形式等方面的改革方案,并在实践中不断践行和完善,达到预期的教学效果,为提高实践教学质量提供参考。第 o第。 卷期201 2年 6月东北农业大学学报 (会科学版)社V0 . 0 N . 11 o 3J n 2 2 u …

关于春招 秋招面试的一些经验

2019 年第 24 篇&#xff0c;总 48 篇文章本文大约 5000 字&#xff0c;阅读大约需要 15 分钟周末了&#xff0c;就不写技术了&#xff0c;来聊聊关于春招/秋招面试的事情&#xff0c;刚好最近也是逐渐开始春招找实习或者找工作的时候了&#xff0c;我就介绍一些当初准备春招实…

计算机win7内容已满,Win7旗舰版电脑C盘满了怎么清理

有些小伙伴电脑用着用着&#xff0c;突然发现C盘磁盘空间以及满了&#xff0c;打开C盘却不知道该删哪些、该留下哪些。C盘空间满了可能是将软件下载到C盘或是垃圾文件积累过多&#xff0c;下面就给大家分享一下Win7旗舰版电脑C盘满了的清理方法。电脑C盘清理方法&#xff1a;首…

char p[]与char *p的区别

#include <iostream> using namespace std;int main(void) {char *pp "abc";//*pp指向的是字符串中的第一个字符。char p[] "abc";//p;//不允许改变p的值//pp;//true;//p[0] A;//true//pp[0] A;//false,运行时写错误cout << pp<<end…

常用机器学习算法汇总比较(完)

机器学习入门系列&#xff08;2&#xff09;–如何构建一个完整的机器学习项目&#xff0c;第九篇&#xff01; 该系列的前八篇文章&#xff1a; 机器学习入门系列(2)–如何构建一个完整的机器学习项目(一)机器学习数据集的获取和测试集的构建方法特征工程之数据预处理&#…

css块元素与行内元素特点,CSS区分块级元素和行内元素

块级元素(块级元素一般当做容器使用&#xff0c;既可以容纳内联元素也可以容纳块级元素)特点&#xff1a;1.每个块级元素都是独自占一行&#xff0c;其后的元素也只能另起一行&#xff0c;并不能两个元素共用一行。2.元素的高度、宽度、行高和顶底边距都是可以设置的。3.元素的…

【android开发】如何在Linux平台下安装JDK环境

原文&#xff1a;http://android.eoe.cn/topic/android_sdk Linux平台JDK安装 本文主要描述如何在Linux平台下安装JDK环境。进入网页&#xff1a;http://www.oracle.com/technetwork/java/javase/downloads/index.html 如下图&#xff1a; 这里作为开发人员&#xff0c;我们选择…

css 两行字变成一行,如何通过CSS将两行文本更改为一行?

我想问你的专家一个基于CSS的问题&#xff0c;我认为你可能很容易回答这个问题。我试过 - 但失败了。我已经看过这支钢笔并且非常欣赏这种效果 - 尽管如果文字可以放在一行上会很完美&#xff0c;例如&#xff1a;标题&#xff1a;Foo并保持隐藏的滚动不变。谢谢&#xff01;罗…

[Github项目推荐] 推荐三个助你更好利用Github的工具

2019 年第 26 篇&#xff0c;总 50 篇文章本文大约 1700 字&#xff0c;阅读大约需要 5 分钟作为一名程序员&#xff0c;学会使用 Github 是一个必备技能&#xff0c;正如同需要学会利用谷歌搜索问题的解决方案一样。今天&#xff0c;就推荐3个助你更好使用 Github 的工具&…

twitter storm常用命令

1、提交Topologies命令格式&#xff1a;storm jar 【jar路径】 【拓扑包名.拓扑类名】【stormIP地址】【storm端口】【拓扑名称】【参数】eg&#xff1a;storm jar /home/storm/storm-starter.jar storm.starter.WordCountTopology wordcountTop;storm jar /home/storm/storm-s…

ajax是操作系统吗,ajax 跟post 可以设置它是否同步执行

当前位置:我的异常网 操作系统 ajax 跟post 可以设置它是否同步执行ajax 跟post 可以设置它是否同步执行www.myexceptions.net 网友分享于&#xff1a;2013-06-13 浏览&#xff1a;0次ajax 和post 可以设置它是否同步执行ajax的async设置成false,为什么没效果$.ajax( {async…

Python-100例(7-8) 复制列表 打印乘法口诀

前面分享的六道题目如下&#xff1a; Python-100 | 练习题 01 & 列表推导式Python-100 练习题 02Python-100 练习题 03 完全平方数Python-100 练习题 04 判断天数Python-100例(5-6) 排序&斐波那契数列 这次是分享 Python-100 例的第 7-8 题&#xff0c;分别是复制列表…