Chinaunix首页 | 论坛 | 博客
  • 博客访问: 130191
  • 博文数量: 47
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 243
  • 用 户 组: 普通用户
  • 注册时间: 2014-11-18 11:45
文章分类

全部博文(47)

文章存档

2017年(2)

2015年(33)

2014年(12)

分类: Java

2014-12-09 23:09:03

概念:在开发功能代码之前,先编写测试代码,然后只编写使测试通过的功能代码,以测试来驱动这个开发过程的进行。
如:工人砌墙,会先用桩子拉上线,使砖能垒的笔直垒砖时是以这根线为基准测试驱动开发就如此,先写测试代码,就像工人先用桩子拉上线,然后编码时以此为基准,只编写符合这个测试的功能代码
多币种资金举例:
瑞士法郎与美元的兑换率为2:1
步骤:
    
新增一个测试(测试乘法功能
    
    从图中可得知,测试不能通过编译,错误如下:
  • 无Dollar类
  • 无构造方法
  • 无times(int)方法
  • 无amount域
    通过创建相应的类,方法等,使编译通过
    

    运行所有的测试程序
    
    原因:amount并附有赋值,默认值为0

   若失败,做一些小改动
    

    运行所有测试程序,并且全部通过

    测试程序与代码所存在的问题在于它们之间的依赖关系(不可能只改动其中一个,而不改动另一个)
    目标:编写一个有用的测试程序,不需要修改代码
    如果问题出现在依赖关系上,其表现即为重复设计(相同的表达式在在代码的多个地方出现),可通过各种对象抽象出逻辑上的重复设计
    通常情况下,重复设计存在于两段代码之间,但此例中重复设计存在于测试中的数据及代码中的数据之间
    
    逐步用变量代替常量

    重构代码消除重复设计,优化设计结构
    
    但在此过程中还有一些奇怪的现象:
        当在Dollar对象上施加一个操作后,Dollar对象就改变了。
        

    第一次调用times()后,five变为10,但如果我们从times()返回一个新对象,,即可对原来的five进行操作,但不会让它发生任何变化。
    
测试驱动开发常用的3种方式:
    伪实现:返回一个常量并逐渐用变量代替常量,直至伪实现代码成为真实实现的代码
    显明实现:将真实的实现代码键入
    三角法

阅读(774) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~