提高代码的可测性
这里的可测性主要指 Mock 的容易程度, 和测试的隔离性,
至于测试的自动性, 可重复性, 非偶然性, 无序性, 完备性(全覆盖), 轻量性(可快速执行),
一般开发人员, 加上 JUnit 等工具的辅助基本都能做到, 也能理解它的好处, 只是工作量问题,
这里要特别强调的是测试用例的单一性 (只测目标类本身) 和隔离性(不传染失败),
现在的测试代码, 过于强调完备性, 大量重复交叉测试,
看起来没啥坏处, 但测试代码越多, 维护代价越高,
经常出现的问题是, 修改一行代码或加一个判断条件, 引起 100 多个测试用例不通过,
时间一紧, 谁有这个闲功夫去改这么多形态各异的测试用例?
久而久之, 这个测试代码就已经不能真实反应代码现在的状况, 很多时候会被迫绕过,
最好的情况是, 修改一行代码, 有且只有一行测试代码不通过,
如果修改了代码而测试用例还能通过, 那也不行, 表示测试没有覆盖到,
另外, 可 Mock 性是隔离的基础, 把间接依赖的逻辑屏蔽掉,
可 Mock 性的一个最大的杀手就是静态方法, 尽量少用.
来源: http://www.jianshu.com/p/fe6a189ad291