转自 http://42.96.169.71/blog/2013/01/15/shi-yong-xcodejin-xing-dan-yuan-ce-shi/
单元测试,是保证产品质量的一个好方法。 移动产品会经常的更新升级,每次版本更新的时候,都需要花费大量的精力来进行测试。 使用单元测试,则可以减少这类重复性的工作。 能够让测试变得更加自动化并且大幅提高测试的效率。 Xcode 为我们集成了单元测试框架,OCUnit。让我们来看看如何在 Xcode 配置单元测试:
![](http://42.96.169.71/assets/images/unittest_1.png)
- 在接下来的界面中,按照下图选择,然后点击 Next:
![](http://42.96.169.71/assets/images/unittest_2.png)
![](http://42.96.169.71/assets/images/unittest_3.png)
- 这时候,Xcode 中会新增加一个分组,以你刚才输入的名称命名。
![](http://42.96.169.71/assets/images/unittest_4.png)
在这里面已经帮我们创建好一个单元测试了,上图中的 test.h 和 test.m 就是 Xcode 为我们创建的测试。
- 现在我们切换一下 Scheme, 切换到我们新创建的单元测试上,逻辑测试只能在模拟器上面运行,所以运行目标要选择模拟器:
![](http://42.96.169.71/assets/images/unittest_5.png)
现在,按下 Cmd+U 就可以运行单元测试了。
![](http://42.96.169.71/assets/images/unittest_6.png)
测试失败了,失败的原因很容易发现,我们在 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
|
最后一行的内容表示测试成功了。到此为止,你的单元测试环境就搭建成功了。接下来就可以写你自己的测试了。