iOS TDD

      最近阅读了一本涉及到单元测试和重构知识的书--《驯服烂代码》。这本书中讲到了什么是烂代码,在编程过程中怎样避免产出烂代码,更重要的是可以尽量避免写bug,代码写的漂亮对日后的维护工作影响很大。记得自己第一次写项目的时候,满满地输出bug,而且那会还不懂得如何优化代码,后果就是每增加一些需求或改变一些需求,都是硬着头皮无止加班。

  接下来我总结一下通过这本书习得的一些技巧:

        part1.关于测试用例驱动开发的好处。

        part2.关于重构,在第十三章到第十五章当中提及到。

      1.没有自动化测试的代码重构就是“裸奔”。

      2.步骤:(1)消除重复和命名不规则的代码。

              (2)将同类型的变量抽取出一个新的类。

          (3)消除魔法数,尽可能使用变量名。优化多层嵌套的if-else语句,通过return提高代码可读性。消除判断语句中条件不易读的问题。

    part3.编写单元测试的过程和处理依赖关系。

        1.单元测试过程:先写测试的Assert部分的意图代码,然后再推导出Action和Arrange部分的测试意图代码,并通过修复意图代码的编译和测试运行错误,来驱动出生产代码。

      2.处理依赖关系过程涉及到的一些名词概念:

          (1)被测系统(System Under Test,简称SUT)

          (2)依赖组件(Depended On Component,简称DOC)与之等价的测试替身(Test Double),Stub和Mock都属于测试替身。前面所说的与之等价,是指同样被被测试系统所依赖作用,但是测试替身比依赖组件所被被测系统的依赖程度更低。通常会将测试替身定义为接口或者定义为父类当接口使用。

          (3)Stub和Mock都是测试替身,那么Stub和Mock的区别在于,Stub控制输入,管理各种测试用到的情况。Mock除了控制输入还控制了输出,验证结果。

  最后是一些补充和例子

  xcode上如何使用单元测试:

    http://www.cocoachina.com/ios/20140715/9144.html

  part2相关代码:

    重构之前的代码 https://github.com/jbrains/trivia/tree/master/objective-c

    重构之后的代码 https://github.com/forrHuen/TTD_iOS_DEMO

原文地址:https://www.cnblogs.com/huen/p/5649434.html