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原创,欢迎转载分享。请尊重作者劳动,转载时保留该声明和作者博客链接,谢谢!
iOS7初体验(2)——单元测试的更多相关文章
- iOS7初体验(1)——第一个应用程序HelloWorld
iOS7 Beta已经发布了,迫不及待地下载了iOS 7及Xcode 5并体验了一下.先做一个简单的Hello World看看都有哪些变化吧. 1. 启动Xcode5-DP: 2. 从菜单选择File ...
- iOS7 初体验
iOS7 初体验 近日来由于iOS7的发布,引来业界的各种吐槽. 为了体验一把,我已经把iPhone5刷成了iOS7,也下载Xcode5-DP并进行了测试.我想说的是iOS7与Xcode5-DP中新增 ...
- iOS7初体验(3)——图像资源Images Assets
开始之前,首先回顾一下iOS7初体验(1)——第一个应用程序HelloWorld中的一张图,如下所示: 本文便分享一下Images.xcassets的体验~_~ 1. 打开此前使用过的HelloWor ...
- junit4初体验
OK,现在我们正式开始junit4系列的整理.前面的junit38作为4的补充知道就好了,实际编码中我们以4为主.这里先来一把junit的初体验,同时也让我们来一步一步的了解下TDD的好处. ORM大 ...
- .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验
不知不觉,“.NET平台开源项目速览“系列文章已经15篇了,每一篇都非常受欢迎,可能技术水平不高,但足够入门了.虽然工作很忙,但还是会抽空把自己知道的,已经平时遇到的好的开源项目分享出来.今天就给大家 ...
- Xamarin+Prism开发详解四:简单Mac OS 虚拟机安装方法与Visual Studio for Mac 初体验
Mac OS 虚拟机安装方法 最近把自己的电脑升级了一下SSD固态硬盘,总算是有容量安装Mac 虚拟机了!经过心碎的安装探索,尝试了国内外的各种安装方法,最后在youtube上找到了一个好方法. 简单 ...
- Spring之初体验
Spring之初体验 Spring是一个轻量级的Java Web开发框架,以IoC(Inverse of Control 控制反转)和 ...
- Xamarin.iOS开发初体验
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKwAAAA+CAIAAAA5/WfHAAAJrklEQVR4nO2c/VdTRxrH+wfdU84pW0
- 【腾讯Bugly干货分享】基于 Webpack & Vue & Vue-Router 的 SPA 初体验
本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57d13a57132ff21c38110186 导语 最近这几年的前端圈子,由于 ...
随机推荐
- 【HDOJ】1385 Minimum Transport Cost
Floyd.注意字典序!!! #include <stdio.h> #include <string.h> #define MAXNUM 55 #define INF 0x1f ...
- 【HDOJ】前三百留念
4个月不到的时间,终于刷到了HDOJ前三百.肯定还不够,好多基本的算法还不了解.还得继续学习.以此留念,假期目标是前一百.
- java学习面向对象之接口
上一节当中我们说道抽象类,抽象类当中的方法可以是抽象的也可以是非抽象的,那么当抽象类中所有方法都是抽象的时候,我们就可以把它重新定义为接口.代码示例: abstract class Animal { ...
- Windows玩转Docker(二):运行whalesay image
docker官网site:http://www.docker.com/ 参照site:https://docs.docker.com/windows/step_three/ docker安装参照: h ...
- HDOJ/HDU 2566 统计硬币(公式~遍历~)
Problem Description 假设一堆由1分.2分.5分组成的n个硬币总面值为m分,求一共有多少种可能的组合方式(某种面值的硬币可以数量可以为0). Input 输入数据第一行有一个正整数T ...
- poj 1080 dp如同LCS问题
题目链接:http://poj.org/problem?id=1080 #include<cstdio> #include<cstring> #include<algor ...
- 开源sip server & sip client 和开发库 一览
http://www.voip-info.org/wiki/view/Open+Source+VOIP+Software http://blog.csdn.net/xuyunzhang/article ...
- Drawing Lines - SGU 135(简单递推)
求N条直线最多能把一个平面分成几部分. 代码如下: ========================================================================== ...
- Segments - POJ 3304 (判断直线与线段是否相交)
题目大意:给出一些线段,然后判断这些线段的投影是否有可能存在一个公共点. 分析:如果这些线段的投影存在一个公共点,那么过这个公共点作垂线一定与所有的直线都想交,于是题目转化成是否存在一个直线可以经 ...
- 详解C#中System.IO.File类和System.IO.FileInfo类的用法
System.IO.File类和System.IO.FileInfo类主要提供有关文件的各种操作,在使用时需要引用System.IO命名空间.下面通过程序实例来介绍其主要属性和方法. (1) 文件打开 ...