其实自己对单元测试那套东西也是听说过不少的,而且自己也觉得挺有道理,却是嘛,如果有测试结果摆在那里的话,重构起来胆子都会更壮!不过我却大多数时候都是在提心吊胆地写代码,虽然项目已经分成了几个小的模块,但是当用到其他模块的功能时却老是担心会有错误,而且却是经常会有 bug 散布在各个模块中。
我明白单元测试的重要性,可是却总是“没有时间”(或者所用的工具不太合适)去写单元测试。直到最近有了亲身体验,我才明白:我以前根本没有明白单元测试的重要性!
其实并不是什么大的项目,就是在写前面关于 Continuation 的文章中相关的代码的时候,碰巧试用了一下 Aptana 和 RDT ,看到它的新建菜单里面有单元测试一项,便试了试。Ruby 自带的单元测试试用起来也很方便,我连文档都没有看。如果对单元测试的概念稍微有一点了解的话, setup 和 teardown 这两个方法不用说也知道都是用来干啥的。然后就是写一些以 test_ 开头的(非私有的)成员函数,他们会被调用以作测试,测试中可以使用 assert_equal 、assert_raise 之类的一些辅助函数。就这样了,写好之后在菜单里面找到“作为单元测试运行”就可以看到结果了。
秉承了 JUnit 的绿条和红条,这下算是亲自见到了,果真是名不虚传!单元测试的效果比我以前想象中要好得多:
- 单元测试可以避免许多问题,对重构尤为友好,有了测试代码,不用担心原来可以运行的代码在重构之后又不能运行了,也不用担心以前修复过的 bug 在后面会重新引入进来。不过这也是需要测试代码写得合理才行,而且测试需要一点一点地积累起来。
- 其实即使一开始经验不足,写不出很有用的测试代码出来,那绿颜色的条条的作用也是不容忽视的,那简直就像是一粒定心丸。也许有人会说那样反而会让你放松警惕,如果测试代码很烂的话,漏洞百出的代码却被误认为是无懈可击,会导致很多问题。我倒不认为是这样,如果要出问题的话,不管你是怎么想的,它终究还是会出问题,至少有了绿条条,大摇大摆地像个主人一样写代码比提心吊胆地像个小偷一样写代码要舒服得多。
Comments (4)