niva8080 2010-10-15 17:56
浏览 316
已采纳

单元测试与重构的疑问

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

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

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

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

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

  • 写回答

4条回答 默认 最新

  • 没名取 2010-10-23 12:48
    关注

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

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

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

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

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)