大家在开发中使用TDD么?
walkingway这两天在看关于单元测试方面的东西,xcode 5也直接集成了XCTest,过去Logic Tests和Application Tests的概念也没有了,现在统一默认都是Application Tests,也尝试了一下用TDD来写一个类,感觉有点别扭,难道是我的使用方法不对,大家在实际开发中TDD应用的多么。
附blog一枚:
http://iosunittesting.com/
我们其实没怎么用过,应该用用
严格tdd暂时是没有做到,不过一些重要模块还是有做单元测试的
这不都是和写准确足够的注释一样都是大家都知道要这么做,大家都希望别人会这么做,但是没有人会这么做的事情吗。
我的感受是严格的TDD是必须和结对编程配合起来的,然而这种开发方式的选择性非常强,和臭豆腐一样的特点,爱的人爱死,恨的人恨死,比如如果强制要我去结对编程,我宁可先辞职再去找工作,或者找不到工作的话单干算了。
另一方面,TDD要和写程序应该写单元测试分开,好的项目,好的程序员都是应该严格认真的写单元测试的,而且对测试代码的重视程度应该等同功能代码。不过单元测试一定要有完整的持续构建和版本控制系统来配合,否则也白白浪费了写单元测试的价值。
我不喜欢的是TDD中间那个D,但是坚持编程必须带着测试,也就是说Develop With Tests (DWT)是必须的,TDD是实现DWT的一种具体实践方式,但不应该是唯一的方式,也不应该是被强迫采用的方式。
十月份团队转移开始整Html5依赖一直写javascript 过程很痛苦 js这门早就应该滚出编程界的语言来说 我觉得TDD是很需要的 至少你的语言扩展和工具相关全部都要tdd 一来要tdd可以让你写下一个函数之前确定需要兼容的浏览器 可以实时的跑出多个浏览器的结果 二来这门语言的混乱程度 在你重构的时候还是很需要参考下之前的测试用例的 改错的几率比较大 而针对传统的javaweb或者android来说 tdd则在团队里不是必须的 很多都是后补的用例 但是毋庸置疑 如果你觉得应该TDD那么请丢下顾虑彻底的TDD 带来的美妙程度是你之前无所想象的 所以我决定以后再回java也坚决的可以TDD就TDD
其实可能比较复杂的一个问题是iOS这样的UI/UE为主的编程,很难TDD吧?
像楼上 coredump 说的,TDD 中间那个 D 简直就是反人类的存在。很同意一点是我们其实要做的是 DWT。从我们实施 TDD 的结果来看,切身体会是 1. 开发周期明显拉长。 2. 代码质量没有太大幅度的提高。 3. 很多严格 TDD 出来的代码块依旧需要大量重构。
聊天的时候发现好童鞋都是这样认为的:写 unit test 就是 TDD ...... 然后我就不知道怎么说下去了。
tests 存在的意义不只是开发过程中的爽心爽肺,最大的意义在于,代码交接和重构的时候。(我是不是说多了 ......)
我们现在做到了 UE 交互行为都是有 tests 验证的。 关于 UE 怎么做 test 最重要的一点就是:不要用全局变量 ...... 没有不可测试的语言,只有不可测试的代码。
个人感觉TDD对个人开发帮助并不大,主要贡献在于团队,在团队中发挥稳定与保障的作用。