之所以单元测试在国内本土软件开发企业中没有成为主流,我个人认为主要原因是包括码农、开发经理、公司高层在内的国内本土软件开发团队,大都没有看到“单元测试”能给产品内在质量所带来的具有中国味道的好处。西方大师所认为的单元测试“能够确定开发接口、保护已有代码不被破坏、起到API文档作用”等等好处,我认为对于中国软件开发团队还是不具足够的吸引力。

  我认为,比较能说服中国软件开发团队认可单元测试的一个理由是:把你写的那些“代码”看作你攻下的城池,若你为这些代码写了单元测试,好比你攻下城池,并且建立了当地政府,控制住了当地局面,这是农耕文明皇帝的一般做法;若你只是写代码,但从不写单元测试,那你所做的有点像游牧民族,攻打一个城池并抢走一下好东西(写代码来完成功能、修复bug),但是“攻而不占”。中国历史证明,游牧民族要是想当农耕文明的皇帝,都不约而同地改掉了“攻而不占”的习惯,写单元测试,控制住了所占的城池。

  我认为有些互联网公司,想试一试某款产品的市场是否对路,用很快的速度开发,不写单测,产品没人用抛弃,有点像游牧民族的路子。

  孔子说“无可无不可。”农耕文明的皇帝和游牧民族的,各有各的好处。所以写单元测试,也需要根据企业情况来酌情权衡。

  游牧民族的虽然速度快,但是有一点必须清楚,那是:我攻打的城池永远不归我拥有,因为我没写单元测试来控制住它。明白这一点,再做游牧民族。

  想当农耕文明的皇帝,还是相当游牧民族的,你自己来决定。

  我个人斗胆地认为,我刚才的“农耕文明的皇帝和游牧民族的”的比喻,在说服中国开发团队接受重构和单元测试的观念上,或许比Ward Cunningham创造的“技术债务”debt要好使一点。大家不妨试一试。

  本文转载自:http://blog.csdn.net/wubinben28/article/details/8803718