单元测试与重构的疑问

单元测试与重构的疑问

问题描述:

对于单元测试,如果按照书上所说:

1.单元测试与功能测试不同,是对各个组件的独立测试
2.单元测试为重构起到安全网的作用
3.单元测试减轻了设计的压力,可以先进行简单设计,然后逐渐重构出成熟的设计

那么:
我如果对这些组件的设计进行重构的话(比如对组件接口进行调整,或者两个组件合成一个组件,一个组件拆成两个组件),那么单元测试也需要跟着

变,那岂不是起不到“安全网”的作用了?不对啊,那么最终我还是不敢对设计轻易重构啊。难道单元测试只是针对接口固定,极小范围的重构有用处?

在下愚钝,百思不得其解,看了好多书,论坛也翻遍了,还是没有找出这个问题的答案,无奈发帖来问。

重构时,如果单元测试需要调整, 说明,单元测试本身的定位不对

重构是什么, 是在不影响客户接口的前提下的内部调整,
(如果你改动了客户接口,说明已经不是‘重构’了)

单元测试, 是针对客户接口而不是实现,是对客户接口的承诺

另外
"难道单元测试只是针对接口固定,极小范围的重构有用处?"
所有的代码都是针对接口的, 并保持尽量稳定的接口, 你会发现, 可重构的,决不是‘极小范围’

这也可以推导出:
用户接口是程序设计的重要成分, 需要花大心思设计; 至于具体实现,反倒可以逐渐实现

[quote]那么:
我如果对这些组件的设计进行重构的话(比如对组件接口进行调整,或者两个组件合成一个组件,一个组件拆成两个组件),那么单元测试也需要跟着

变,那岂不是起不到“安全网”的作用了?不对啊,那么最终我还是不敢对设计轻易重构啊。难道单元测试只是针对接口固定,极小范围的重构有用处? [/quote]

没必要理解的那么复杂吧!单元测试 不管咋测试!反正就是为了测试 bug 然后修正!有利于设计 和修改啊!

[quote]架构师兄弟,谢谢你的回答,不过您还是没有解我心头疑问啊,我主要是不明白,单元测试是怎样为重构设计做保障的。[/quote]

个人理解不同吧!
[color=blue]重构是获得结构良好的方法,通过重构,我们在保持功能不变的情况下,改善代码的质量,提高代码的复用程度[/color]

单元测试 把问题都找出来了!改善了!就提高了代码质量!慢慢就有利于重构吧!呵呵!

我也有跟楼主一样的疑问。不过我现在想,可能是我们对单元测试的理解不正确。我们理解的单元测试是针对逻辑的单元测试,但是在重构里所说的单元测试貌似是对于公开接口的输入与输出的测试。