单元测试的好处
不靠运气编程
当我们在重构或者增减功能时,尽管测试了当前功能是否 ok,也很难保证没有影响到其他功能。
这个时候,也不可能去把其他功能都全部测试一遍。
这时,一般我们就交给测试人员去负责了。
那打比方,你破坏了部分旧功能,如果运气好,测试人员也测出来了。
如果运气不好,被破坏的功能被领导或客户发现。
以上就是靠运气编程。
但是如果我们对每个功能都写了测试,那旧功能里引入 bug 后,我们立马就能知道。
这样我们将不再依靠运气编程。
测试提高我们开发时的自信心,使项目真正具备了可维护性,可拓展性。
逆向改善程序设计
如果你的程序设计得很烂的话,你的单测也会很难写。
如果你要写单测的话,那你的程序设计得也要很良好。
程序设计需要:
- 单一职责
- 高内聚
- 低耦合
否则就会很难写单测。
重构
尽管大家大都由于害怕引入 bug,而不敢重构代码。
但重构代码却是异常重要的。
就像房屋一样,如果不随时维护,很快就会破旧不堪。
但如果有了测试的话,那就可以放心大胆地重构了。
因为一旦在老功能里引入了新的 bug,我们立马就能知道。
项目代码质量越低,添加新功能,修 bug 的难度也越大。
还技术债务的唯一办法就是重构。
活文档
单元测试就是一个可执行的文档。
你要带一个新人,有了单元测试之后,你也不需要去一步一步带他。
阅读源码的技巧之一就是,先去看它的测试。
Review 代码
同样,如果同事提交了一个添加新功能或修 bug 的分支,
我们怎么知道这些代码有没有影响到老功能呢?
我们不可能去测一遍之前的所有功能。
这时同样需要,单元测试去跑一遍之前的所有功能。
测试是项目代码质量非常重要的安全网。