简介:
- 单元测试是一种通过代码检测代码的开发手段,常用于敏捷开发和测试驱动开发
- 测试驱动开发是 红灯(有错误) / 绿灯(无错误) 式的迭代开发
- 代码检测通常需要(预先/设想)设置边界条件,因为UI测试的时候,很多边界条件不太容易满足
- 单元测试主要针对 业务逻辑 代码进行测试!不适合做UI(ViewController)的测试
- MVVM的设计模式,把几乎所有重要的业务逻辑全部封装在视图模型,通过单元测试就很方便检测条件以及代码质量!
- 测试覆盖率,有很多人会讨论到底多少代码应该测试!
- 需要针对业务逻辑的对外开放的函数终点测试! 如果有'局部测试'的业务逻辑小函数 ,可以临时测试!
- 通常公司的代码测试覆盖率从50% - 70%不等
- Xcode的单元测试,还能够做性能测试
- Xcode 可以利用性能测试,对某一段代码,重复测试 10 次!
参考:iOS 单元测试--逻辑测试
- Xcode 可以利用性能测试,对某一段代码,重复测试 10 次!
基本体验
log打印1. 先创建一个单元测试的项目
创建项目
2. 创建一个Person类,预备代码
Person.h
Person.m
3. 创建测试文件
找到
创建
4. 文件内容简单介绍
简单介绍
5. 创建常规的检测,如下图:
常规
我们点击测试例子,旁边的小绿按钮测试一下,发现好像并没有发生什莫。但是,当我们把下面的打印台打开,其实它已经做了好多事情。
我们看打印台,下图所示:
单元测试不是靠NSLog来测试,NSLog是程序员用眼睛看的笨办法。使用 -断言- 来测试的,提前预判条件必须满足!
6. 断言- 来测试
断言- 来测试
但是,我们进行下面的操作你会发现:(请看下图)
更改条件,在此验证
我们在此运行就会发现,如下图:
年龄不一致
通过这次,测试,我们可以检测到我们的数据了,和方法内部的有效性。
7. 还原
删除obj.age++
我们在运行一下,就通过了。
**8. ** 我们创造一个空字典
如下图:
我们传入一个空字典@{},在给此行加上断点,运行,单步走,我们发现
传入的name = nil;age = 0 (nil);age类型nil,就相当于0,而我们比较的是字符串。nil 是一个指向0的指针,运行到那行就会报错了,具体如下图:
图解
解决:
Person.name = nil
9 把下面这个代码打开测试一下
第三个
我们一打开,我们便发现,此时崩溃了,我们在看一下,调用堆栈,如下图:
发现了错误
那么,我们该怎么解决呢?
解决
测试
扩展 1
对于测试,我们还可以写测试代码,写完之后,点击测试按钮,如下图:
测试代码
测试运行后,我们发现出错了
解决
解决
测试
person模型测试完成
扩展 2
网友评论