单元测试效益特别高,方法也很简单,但却尝试的企业很多,成功实施的企业很少,为什么呢?主要原因就是难于突破可测性问题。“可测”这个词,意思很明白,如果不“可测”的话,那就是不能测,没法测,就是做不下去,或者困难太多,成本太重,热情被逐渐消磨,最后不得不放弃。所以可测性问题是单元测试的关键阻碍,是我们首先要解决的。
可测性问题是指代码的可测性很差,导致测试很困难。为什么代码的可测性会很差呢?一般来说,这些原因导致了代码的可测性差:项目很复杂,开发流程不规范,耦合度很高。耦合是指代码之间的互相依赖,例如一个函数调用另一个函数,就是耦合。
一般的建议是改进开发流程,提高代码可测性,但从实践来看,这是不现实的。可测性差在企业项目中普遍存在,有其客观原因,很难改变。首先,多数企业项目本身的功能就很复杂,这是需求决定的,改不了。其次,程序并非凭空编造的产物,而是客观事物的反映,客观事物本身互相关联,互相纠缠,必然形成代码间的耦合。第三,流