单元测试是什么
单元测试,是对程序中的最小单元进行测试,一般是函数(或者对象的方法)。通过比较函数的返回值(有时候会捕获异常)和期望值,来断定测试是否通过。
有必要吗
结论是有。
单元测试有如下效果:
1. 提高可信度
如果你经常混github,你应该能够发现,很多开源的项目是具备详尽的单元测试的。 为什么呢? 单元测试可以说是工程师对项目功能的承诺,别人查看测试代码,就能了解对应的函数的大概使用方法,什么样的输入会有什么输出,什么时候会报异常,都是有迹可循,看着很放心。如果你看到一个项目,没有测试,即使readme写的天花乱坠,你敢用到公司的项目中么?
2. 避免低级错误
如果一个项目有单元测试,当你添加了一个新功能,或者修改了一个bug时,你只需要简单的跑一下测试就可以基本确定你的修改并没有引起大面积的,灾难性的事故。说个很简单的例子,我开发了一个npm 命令行程序,在一起版本升级的时候修改了一个很小的函数,由于太小了所以也没有做一些验证测试。结果这个版本出了大问题。如果有人刚好下载了这个版本,那他肯定会骂死我。如果我当时有单元测试,这种失误绝对是可以避免的。
3. 测试效率高
有的人可能会说,将项目启动起来再人工验证,效果也不差。我们知道,人有惰性,人会犯错。但是经过细心编写的单元测试脚本却可以运行千万次而保证始终如一。而且,相对于人工验证的低效率,单元测试可以最大限度解放生产力。