单元测试与重构,该如何处理
发布时间:2011-06-20 17:28:35 文章来源:www.iduyao.cn 采编人员:星星草
单元测试与重构 对于单元测试,如果按照书上所说: 1.单元测试与功能测试不同,是对各个组件的独立测试 2.单元测试为重构起到安全网的作用 3.单元测试减轻了设计的压力,可以先进行简单设计,然后逐渐重构出成熟的设计 那么: 我如果对这些组件的设计进行重构的话,那么单元测试也需要跟着变,那岂不是起不到“安全网”的作用了?那么最终我还是不敢轻易对设计进行重构。难道单元测试只是针对接口固定,极小范围的重构有用处? 比如你针对类A写了一些单元测试,但重构以后可能A这个类都不存在了,这些单元测试也都得重写,那这些测试还有什么意义呢 在下愚钝,百思不得其解,看了好多书,论坛也翻遍了,还是没有找出这个问题的答案,无奈发帖来问。------解决方案-------------------- 重构是对软件内部结构的一种调整,目的是在不改变软件之可察行为前提下,提高其可理解性,降低其修改成本。 不改变行为,单元测试当然不变。 如果需要改变行为,单元测试也要变。这也没什么问题。 http://www.cnblogs.com/blueclue/archive/2010/06/01/1749308.html
------解决方案-------------------- 1.重构也是开发工序,当然要有测试,只是凑巧你可能利用到原先的测试, 其实真正测试工序是有类库的,也就是说测试种类也就那么几种,不需要经常增加新的测试; 2."可以先进行简单设计,然后逐渐重构出成熟的设计" 你可能理解错了,那不是针对项目而言的, 一个组件既然通过了测试,就不会再去改动了, 除非发现新的BUG,那么为了解决BUG,需要的是"重写",而不是重构, 如果需求变更会导致重新开发,那么请重新派工,这是新的开发任务了, Coder的职责是在派工单规定的工时内通过测试,他不需要(也不应该)考虑"重构"这样的问题, 3.真正的重构是架构师回顾已有的项目,梳理其中的业务,如果发现有重用价值的, 会整理出新的设计来增强开发组织的架构或者类库,这和原来做好的那些个项目没有什么关系
------解决方案--------------------
探讨 重构是对软件内部结构的一种调整,目的是在不改变软件之可察行为前提下,提高其可理解性,降低其修改成本。 不改变行为,单元测试当然不变。 如果需要改变行为,单元测试也要变。这也没什么问题。 http://www.cnblogs.com/blueclue/archive/2010/06/01/1749308.html
------解决方案-------------------- 想想已经经历了200年的传统工业,或者哪怕是伴随软件技术一同发展的IT制造业, CPU一直飞速的更新换代,你见过把做好的CPU收回"修改"的吗?那种复杂的产品想改都难, 新制程的出现不会应用在已经发布的产品上 ,但是即使是将要生产的"老架构"的产品也可以从中获益, 我们整天把"面向修改封闭"挂在嘴上,但是我们却没有用到生产实践中
------解决方案-------------------- 不改变行为不代表不改变设计。 如果你在编码前不用大量时间进行详细设计,那你活该经常改变单元测试。
------解决方案--------------------
没说一点不改变设计, 改变设计可能会改变单元测试, 如果单元测试的改变频繁到不能接受, 那就是设计没有做好, 要么就是接受, 要么就是不去动它了。
------解决方案-------------------- 楼主,其实我更喜欢"极限编程"和"灵巧编程",这样的名字更能给我灵感,马丁福勒的很多观点我也很欣赏, 关键还是怎么理解人家的思想,比如我摘录了一段马丁的原文: The software industry has a delight in taking words and stretching them into a myriad of subtly contradictory meanings. 他们在贴出代码的时候比较随意,因为代码都有较强的背景和针对性,那其实只是例子, 他们在表达观点的时候却小心翼翼,你很少看到明确简单的定义,这一点马丁本人在他的著文中不止一次提及, 我更加注意的是原著中流露出来的理论观点,而不是代码, 作者真正的思想往往藏在不起眼的地方表露出来,比如前言,序,概述,代码间隙,后记 很多读者怀着速成的心理,无视别人的背景,目标以及生产手段,无缘无故的去照搬所谓模式或代码,结果可想而知
------解决方案-------------------- 如果是需求确定的情况下,代码重构,应该不会影响单元测试吧?只是代码结构设计的问题嘛!测试先行策略,你所谓的设计,是哪种设计?一般来说测试框架建立好了,实现代码也成型了!若是你初始的需求变化了,那单元测试也得随之变化呀!
------解决方案-------------------- 探讨 重构不是“改善既有代码的设计吗”? to:microtry 之前的代码一点不能变,只能借来参考,用于提炼新的类库? 测试如何重用?
友情提示: 信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
菜鸟请教:RUP和敏捷的区别与联系
敏捷是迭代开发,RUP也是迭代开发,两者有什么区别与联系?有点混淆了。。。
------解决方案---------...
scrum works 中文乱码
scrum works 是否支持中文??
如果支持怎么设置呢?
------解决方案--------------------
看我微波去,里面有答...
想学软件架构设计,有什么好书推荐吗?
最近负责新项目的架构设计,发现无论是理论还是实践都严重缺乏,有什么好书推荐吗?充充电。谢谢!!
-...
关于测试驱动开发
我看敏捷开发不久,看到基本上都提到测试驱动开发,我一直不明白,如何测试、如何驱动?
请问高手能通过一个小小的例子...
急求,如何做的nightly-build
我需要做的一件事事情,是每天晚上,从服务器获取文件,然后编译,打包,部署到服务器上,接着跑测试脚本。
cle...
这是不是敏捷开发???
我们开发时,客户也只是大体了解要做什么东西,然后我们就开始做需求分析,设计,建模,编码开发。
在开发过程中,开发了...
封装变化后,我们能干什么?
我知道设计模式中把变化的和不变的分离,把变化分离出来,继承个抽象,而后在不变的代码中使用这个抽象,
但我...
敏捷,想说爱你不容易--从CMM向敏捷过渡的一点体会(欢迎大家讨论)
http://blog.csdn.net/ggokind/archive/2008/12/23/3591376.aspx
...
敏捷开发的定义
敏捷开发的定义???
大家是怎样理解敏捷开发的???
------解决方案--------------------
敏捷开发是对先进开发手段的统...
如何更好的设计程序功能,让其减少bug的出现?
如何更好的设计程序功能,让其减少bug的出现?比如我要做的软键盘,有以下2中思路,但选择那一...