我刚刚与我的首席开发人员进行了交谈,后者不同意单元测试是必要的或重要的。他认为,具有足够高代码覆盖率的功能测试就足够了,因为任何内部重构(接口更改等)都不会导致需要重写或再次检查这些测试。
我试着解释,但走得并不远,以为你们可以做得更好。 ;-)
功能测试不提供的单元测试代码有哪些很好的理由?如果您只进行功能测试,会有什么危险?
编辑#1感谢您的所有出色答案。我想补充一点,通过功能测试,我不仅意味着要对整个产品进行测试,而且还要对产品中的模块进行测试,只是在底层的单元测试(如有必要)上进行模拟,等等。我们的功能测试是自动的,并且可以连续运行,但是它们比单元测试花费的时间更长(这是单元测试的一大优势)。
我喜欢砖与房子的例子。我想我的主要开发人员说的是测试房屋的墙壁就足够了,您不需要测试单个的砖块... :-)
最佳答案
从我的头顶
单元测试可以毫不费力地重复。编写一次,运行数千次,无需人工,并且比功能测试获得更快的反馈
单元测试将测试小型单元,因此请立即指向发生错误的正确“扇区”。功能测试指出了错误,但是它们可能是由大量模块引起的,即使在合作中也是如此。
我几乎不将接口更改称为“内部重构”。接口的更改往往会破坏很多代码,并且(在我看来)强制执行新的测试循环,而不是没有。