iOS-Main - 单元测试 &基本体验

简介:
  • 单元测试是一种通过代码检测代码的开发手段,常用于敏捷开发和测试驱动开发
  • 测试驱动开发是 红灯(有错误) / 绿灯(无错误) 式的迭代开发
  • 代码检测通常需要(预先/设想)设置边界条件,因为UI测试的时候,很多边界条件不太容易满足
  • 单元测试主要针对 业务逻辑 代码进行测试!不适合做UI(ViewController)的测试
  • MVVM的设计模式,把几乎所有重要的业务逻辑全部封装在视图模型,通过单元测试就很方便检测条件以及代码质量!
  • 测试覆盖率,有很多人会讨论到底多少代码应该测试!
    • 需要针对业务逻辑的对外开放的函数终点测试! 如果有'局部测试'的业务逻辑小函数 ,可以临时测试!
    • 通常公司的代码测试覆盖率从50% - 70%不等
  • Xcode的单元测试,还能够做性能测试
基本体验

1. 先创建一个单元测试的项目

创建项目

2. 创建一个Person类,预备代码
Person.h

Person.m

3. 创建测试文件
找到

创建

4. 文件内容简单介绍
简单介绍

5. 创建常规的检测,如下图:
常规

我们点击测试例子,旁边的小绿按钮测试一下,发现好像并没有发生什莫。但是,当我们把下面的打印台打开,其实它已经做了好多事情。
我们看打印台,下图所示:

log打印

单元测试不是靠NSLog来测试,NSLog是程序员用眼睛看的笨办法。使用 -断言- 来测试的,提前预判条件必须满足!

6. 断言- 来测试

断言- 来测试

但是,我们进行下面的操作你会发现:(请看下图)
更改条件,在此验证

我们在此运行就会发现,如下图:
年龄不一致

通过这次,测试,我们可以检测到我们的数据了,和方法内部的有效性。
7. 还原
删除obj.age++

我们在运行一下,就通过了。
**8. ** 我们创造一个空字典
如下图:
我们传入一个空字典@{},在给此行加上断点,运行,单步走,我们发现
传入的name = nil;age = 0 (nil);age类型nil,就相当于0,而我们比较的是字符串。nil 是一个指向0的指针,运行到那行就会报错了,具体如下图:
图解

解决:
Person.name = nil

9 把下面这个代码打开测试一下
第三个

我们一打开,我们便发现,此时崩溃了,我们在看一下,调用堆栈,如下图:
发现了错误

那么,我们该怎么解决呢?
解决

测试

扩展 1
对于测试,我们还可以写测试代码,写完之后,点击测试按钮,如下图:
测试代码

测试运行后,我们发现出错了
解决
解决

测试

person模型测试完成

扩展 2

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容