本文是重构 读书笔记第三篇
自测试代码的价值
每个类都应该有一个测试函数,并以它来测试自己这个类。
确保所有测试都完全自动化,让他们检查自己的测试结果。
编写测试代码的最有用的时机就是在开始编程之前,当你需要添加特性的时候,先写相应的测试代码。
编写测试代码的时候其实就是在问自己,添加这个功能需要做些什么。编写测试代码还能使你把注意力集中于接口而非实现。
JUnit测试框架
在引入Junit框架之前,我们会在每个类的Main函数里进行测试。这样做的问题是很难运行多个测试。
而junit则让我们建立一个独立的类用于测试,并在其中运行它,使测试工作更加轻松。
你可以执行一大堆测试然后出去吃个午饭XD
频繁的运行测试,每次编译请把测试也考虑进去——每天至少执行每个测试一次。
单元测试和功能测试
JUnit框架的用途是单元测试(Unit Test)
单元测试和功能测试的区别在于功能测试是黑箱测试,站在用户的角度保障软件质量,当功能测试找出bug的时候需要单元测试暴露这个bug。
当你收到bug报告,请先写一个单元测试来暴露这个bug
添加更多测试
观察类该做的事情,然后针对任何一项功能的任何一种可能失败情况,进行测试。
测试最可能出错的部分。
花合理时间抓出大多数bug
测试代码和产品代码相比有个好处就是,测试代码可以放心的复制,编辑测试代码。