《重构改善既有代码的设计》——构筑测试体系

正如作者所言,“花合理时间抓住大多数Bug,要好过穷尽一生抓出所有Bug”。

测试的重点应当集中在可能出错的地方,这帮助你尽快排查错误、大大缩短调试程序的时间。

测试的三个基本原则:自动化、本身有效、单元测试。要点如下:

1. 构建自测试代码

Java开发测试惯用手法是testing main(),意思是每个类都有一个用于测试的main()函数。这是一个合理的习惯,但可能不好操纵。

Java开发另一个更轻松的做法,是建立一个独立的类用于测试,并在一个框架中运行它,例如Junit框架。

2. 采用Junit测试框架

测试框架的composite结构:

Test接口

—>TestSuit类:产生一个测试套件

—>—>addTest()方法:添加测试用例

—>TestCase类:所有测试用例都需要继承该类

—>—>FileReaderTester类:

—>—>—>setUp()方法:用来产生相关对象

—>—>—>tearDown()方法:用来删除对象

—>TestRunner类:所有测试用例都需要继承该类

—>—>—>run()方法:运行suit()套件,输出运行时间、测试用例个数、运行结果

assert()函数:可扮演自动测试角色,参数未true则一切良好,否则输出错误信息

assertEquals()函数:以equals()进行对象比较,以==进行数值比较。

编写测试代码时,往往先在assert()中放置一个错误,以保证测试确实能运行。

功能测试把系统当做黑箱,单元测试使程序Bug浮现出来。

考虑可能出错的边界条件,把火力都集中在那儿。

有用的测试函数:

testReadAtEnd():assertEquals(-1, _input.read()), 测试文件是否读到末尾,需要加到测试套件中:suite.addTest(new FileReaderTester("testReadAtEnd"))

3. 添加更多测试

随着测试越来越多,可以另外生成一个类,专门用来包含由其他测试类所组成的测试套件suit。类似于主控的测试类。

测试不可能找出所有Bug,但是一旦进行重构,就能更好地理解整个程序。

观察代码,看哪儿变得复杂;观察函数,思考哪些地方可能是错的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值