使用Xcode进行单元测试 —— 环境配置_cy-app的博客-程序员宝宝

技术标签: 单元测试  ios  

转自 http://42.96.169.71/blog/2013/01/15/shi-yong-xcodejin-xing-dan-yuan-ce-shi/

单元测试,是保证产品质量的一个好方法。 移动产品会经常的更新升级,每次版本更新的时候,都需要花费大量的精力来进行测试。 使用单元测试,则可以减少这类重复性的工作。 能够让测试变得更加自动化并且大幅提高测试的效率。 Xcode 为我们集成了单元测试框架,OCUnit。让我们来看看如何在 Xcode 配置单元测试:

  • 首先按照下面的图示,创建一个新的 target:

  • 在接下来的界面中,按照下图选择,然后点击 Next:

  • 填写相应的名称,然后点击 Finish。

  • 这时候,Xcode 中会新增加一个分组,以你刚才输入的名称命名。

在这里面已经帮我们创建好一个单元测试了,上图中的 test.h 和 test.m 就是 Xcode 为我们创建的测试。

  • 现在我们切换一下 Scheme, 切换到我们新创建的单元测试上,逻辑测试只能在模拟器上面运行,所以运行目标要选择模拟器:

现在,按下 Cmd+U 就可以运行单元测试了。

  • 测试运行完成后,你应该会看到这个情况:

测试失败了,失败的原因很容易发现,我们在 testExample 调用了 STFail 这个宏,从它的名字就可以看出来,一旦调用这个宏,测试就会失败。 所以,我们把这个行代码删除掉,这时候 test.m 这个文件的内容应该是这样:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#import "test.h"

@implementation test

- (void)setUp
{
          
    [super setUp];

    // Set-up code here.
}

- (void)tearDown
{
          
    // Tear-down code here.

    [super tearDown];
}

- (void)testExample
{
          

}

@end
  • 修改完代码后,再按下 Cmd+U 重新运行测试,这时候你应该在控制台中看到类似这样的输出:
1
2
3
4
5
6
7
8
9
2013-01-15 22:22:34.234 otest[7914:303] Unknown Device Type. Using UIUserInterfaceIdiomPad based on screen size
Test Suite '/Users/mengxiangping/Library/Developer/Xcode/DerivedData/Test-aexhdmmbnjmqrzbolfjyptdprrif/Build/Products/Debug-iphonesimulator/test.octest(Tests)' started at 2013-01-15 14:22:34 +0000
Test Suite 'test' started at 2013-01-15 14:22:34 +0000
Test Case '-[test testExample]' started.
Test Case '-[test testExample]' passed (0.000 seconds).
Test Suite 'test' finished at 2013-01-15 14:22:34 +0000.
Executed 1 test, with 0 failures (0 unexpected) in 0.000 (0.000) seconds
Test Suite '/Users/spring/Library/Developer/Xcode/DerivedData/Test-aexhdmmbnjmqrzbolfjyptdprrif/Build/Products/Debug-iphonesimulator/test.octest(Tests)' finished at 2013-01-15 14:22:34 +0000.
Executed 1 test, with 0 failures (0 unexpected) in 0.000 (0.001) seconds

最后一行的内容表示测试成功了。到此为止,你的单元测试环境就搭建成功了。接下来就可以写你自己的测试了。


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/cuiweijie3/article/details/8667900

智能推荐

10个运维人员需要知道的”系统进程”_study-linux的博客-程序员宝宝

在日常的运维工作中,当我们习惯性的执行ps命令后会看到很多“奇奇怪怪”的进程,而这些进程大部门都是系统的内核进程。很多同学对之了解的甚少,因此今天就为大家整理一篇入门级的系统进程介绍帖,希望能够帮助大家对操作系统进程的理解。在日常的运维工作中,当我们习惯性的执行ps命令后会看到很多“奇奇怪怪”的进程,而这些进程大部门都是系统的内核进程。很多同学对之了解的甚少,因此今天就为大家整

【BZOJ1951】[中国剩余定理][SDOI2010]古代猪文_二分抄代码的博客-程序员宝宝

求g的p次方%mod,根据费马小定理,g^sigma(C(n,d))(d|n)%mod=g^(sigma(C(n,d))(d|n)%(mod-1))%mod,然而mod-1不是质数,只能用把它拆成4个质因数,然后对4个模方程分别求解,先用lucas定理和费马小定里求出对4个质数取模的sigma的值(num[i]),注意,枚举因数d的时候枚举到sqrt(n)就可以了,同时加上C(N,I)和C(n,

chrome好用的几个插件-属于程序员的福利_做一个温柔的程序媛的博客-程序员宝宝

查看链接:http://www.jianshu.com/p/40d147ec84db?ref=myread目前我正在使用的几个插件:1、广告终结者2、ABP(也是屏蔽广告的一个插件)        3、lastPass:(这个插件是通过登录然后使用的,可以将自己的网站表单信息带入自己正在使用的电脑,非常好用)其它几个插件正在尝试。。敬请期

记一下chrome浏览器被毒霸域名劫持解决方案_归落的博客-程序员宝宝

记一下chrome浏览器被毒霸域名劫持解决方案卸载金山毒霸后,浏览器打开会跳转到毒霸页面卸载金山毒霸后,浏览器打开会跳转到毒霸页面把金山毒霸卸载之后,意外的发现自己的chrome浏览器打开的时候,跳出来的是毒霸的页面,被劫持了。按照网上在输入栏输入chrome://version/,发现命令行被重定向到毒霸页面。本来用安全卫士锁住主页,还是存在(看来腾讯还不够流氓,竟然被毒霸给上了)。按照网...

POJ1191-裸动态规划_ACM_Victoria的博客-程序员宝宝

#include #include #include using namespace std;const double INF=1000000000000.0;int n;double _x,w;double s[9][9];double f[9][9][9][9][16];int main(){ scanf("%d",&n); for (int i=0;

随便推点

NOIP2002-普及组复赛-第二题-级数求和_weixin_30345577的博客-程序员宝宝

题目描述Description  已知:Sn= 1+1/2+1/3+…+1/n。显然对于任意一个整数K,当n足够大的时候,Sn大于K。  现给出一个整数K(1<=k<=15),要求计算出一个最小的n;使得Sn>K。输入输出格式Input/output输入格式:一个正整数K。输出格式:一个正整数N。...

python练习12_い木乄子゛的博客-程序员宝宝

题目:判断101-200之间有多少个素数,并输出所有素数。 #!/usr/bin/python# -*- coding: UTF-8 -*-#from math import sqrtprime = []flag = Truefor i in range(101, 201): k = int(sqrt(i)) for j in range(2, k + 1): ...

python—异常处理_didaojiao4342的博客-程序员宝宝

Python 之-异常处理异常和错误part1:程序中难免出现错误,而错误分成两种1语法错误(这种错误,根本过不了Python解释器的语法检测,必须在程序执行前就改正)#语法错误示范一、if#语法错误示范二、def test: pass#语法错误示范三、print(haha2逻辑错误(逻辑错误)#用户输入...

spring boot 自动配置_中国lanwp的博客-程序员宝宝

文章目录springboot自动化配置spring boot mybatis plus依赖spring boot自动配置相关文件启动的自动配置类MybatisPlusAutoConfigurationspringboot自动化配置这里拿mybatis-plus-boot-starter 为例子说明,其他类似spring boot mybatis plus依赖spring boot引入依赖 - 包含了mybatis和mybatis-spring 及 mybatis-plus3.3.2版本

C++中pair使用详细说明_想去的远方的博客-程序员宝宝_c++ pair

一、pair的介绍pair是一个很实用的 "小玩意",当想要将两个元素绑在一起作为一个合成元素、又不想要因此定义结构体时,使用 pair 可以很方便地作为一个代替品。也就是说,pair 实际上可以看作一个内部有两个元素的结构体,且这两个元素的类型是可以指定的,如下:struct pair{ typeName1 first; typeName2 second;};二、pair的定义要使用 pair,应先添加头文件 #include <utility>...

autosar can协议栈 源码解读_AUTOSAR架构的CAN通讯_他在水中央的博客-程序员宝宝

宏观地介绍可参见:autosar.org/fileadmin/A2. AUTOSAR软件分层架构AUTOSAR架构在三个软件层之间划分出最高的抽象层:应用层(Application Layer, ASW),运行时环境(Runtime Environment, RTE)和底层软件(Basic Software, BSW),三者均在微控制器上运行。这里我们主要关注的是底层软件,它进一步分层为:服务层,...

推荐文章

热门文章

相关标签