兼济天下则达 独善其身则穷
最近组里的实习生回了趟家,于是他的一个任务就交给我做了,在这个过程中,我才知道,单元测试有多重要。
拿到他之前写的代码,看到索引中的作者id变成负的,我就知道,这代码中肯定存在错误。找到读取作者id的地方,发现这里把id当做32位整形了,而事实上它是64位整形。而要发现这个问题,其实只需要写一个单元测试就够了。之后花了一些时间写了单元测试,果然找到这个问题,而且还发现了另一处存在错误的地方,真是一箭双雕。
想想自己之前做的小工具,存在不少问题,是一步一步纠正过来的。如果当时能写单元测试,那就可以不需要花费那么多时间在返工上了。在我的体会来看,写单元测试确实需要花费时间,可是这个时间花费的很值得。在写单元测试的过程,其实就是在对代码进行梳理,这样写出来的代码会更加清晰。通过单元测试,可以尽早的发现问题,避免错误。
有些时候,写单元测试可以帮助代码的编写。例如在mapreduce中要解析一个网页的内容,如果没有用单元测试mock出一个环境出来,就必须将代码提交到mapreduce中执行,而这个过程必将非常耗时。通过单元测试,可以显著减少这段时间,提高工作效率。
而且单元测试几乎是功在当代,利在千秋。对于后来的人,当迁移或者重构代码时,只要跑一遍单元测试,就可以知道有没有改变程序的逻辑,这真的很不错。想想工作一年后,才体会到单元测试的重要性,不容易啊。