美文网首页JC专题iOS Developer移动端开发
iOS-Main - 单元测试 &基本体验

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

作者: 麦穗0615 | 来源:发表于2016-10-06 23:53 被阅读247次
    简介:
    • 单元测试是一种通过代码检测代码的开发手段,常用于敏捷开发和测试驱动开发
    • 测试驱动开发是 红灯(有错误) / 绿灯(无错误) 式的迭代开发
    • 代码检测通常需要(预先/设想)设置边界条件,因为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

    相关文章

      网友评论

      • 2b1ed5b649ed:感觉是培训班出来写的,不过确有可取之处

      本文标题:iOS-Main - 单元测试 &基本体验

      本文链接:https://www.haomeiwen.com/subject/cuveyttx.html