发现 rails 有好多测试框架
Test::Unit Webrat Rspec Mocha Selenium Shoulda Watir Rcov Cucumber autotest
但是发现 Rspec 是实际中用的比较多的,是这样吗?
另外,大家在实践中真的有从头到尾实施 TDD 和 BDD 吗?写测试的性价比高吗?
顶楼列举的有些是测试工具而不是框架,是要和 Test::Unit 和 Rspec 搭配用的,所以只比较这两个。
从 Ruby Conf China 2013 的现场举手投票来看,Rspec 大概占到了 9 成。不过我是 Rspec 反对者,认为这套 DSL 徒增复杂性,不如 Test::Unit 简单明了。
写测试性价比高,推荐写够用的测试,但写多少是够有并没有标准,需要自己琢磨。
我其实,就是找个机会,说下自己对测试的看法。。。楼主忽略我吧!
如果你写一段代码,会想着试一试你的代码(应该每个人都这么写代码吧?)。把这个代码写下来,觉得就是最简单的测试。好处显而易见,DRY。
有些没必要写,有的用不好 stub。这些情况,都会拖慢开发。但,代码个人觉得,代码质量的问题,才是最大的问题。
个人而言,半年来,写测试的时候,比我不写测试的时候要快,当然这也有可能是因为项目的特性以及记忆的不准确产生的偏差。但,我测试其实是覆盖不足那种。。。
TDD 其实前面还有 BDD,没 BDD 确定你做的是正确的事,既,你没有用葫萝卜钓鱼。那么有些代码会被直接丢掉。。。你写不写代码,都意义不大。
再者 TDD 不是说你写了测试,你就是 TDD,TDD 的流程,是 Red,Green,Refactor。你不重构,tdd 也没什么意思。
TDD,1 是分析问题的方法,明确目的,具体化问题。就好比接数学题的时候,如果你能问自己问题是什么,和举一些具体的例子,有助于你解题,见《怎样解题》。 2,分解问题。问题被分解为,有什么样的结果,和怎样去实现,是比较合理的。但同时也增加了相当大的复杂度。和学习成本,看如何取舍了。 3,代码的正确性,由代码自身保证。人脑不喜欢做重复的事情,所以,将重复的事情,交给电脑,也应该是合理的。大脑也不擅长逻辑思维,和抽象的事物(见《Your Brain At Work》),而测试刚好代替了大脑的这部分工作。 4, debug 时间和写测试时间,哪个多哪个少,也是看个人了。我 debug 能力跟屎一样,我也懒得学,所以用测试弥补。
释迦摩尼说过,不要相信任何人只凭听说的一切,当真正实践过,并且和自己的“原则”相符的时候,才去相信。
如果真的在乎这个,去读读相关的书,《Test-Driven JavaScript Development》,比如《重构》。了解不同人的不同看法,反对的,支持的。 亲身实践。写测试也分人。写测试也需要经验积累。
不写测试的,一样有牛人,比如云风似乎就不写,一样很牛,再比如 @ruby_sky 。写的,当然也有很烂的。
测试是手段,不是目的。
one more 如果,你写测试,不开心,不写测试,可能会更好。如果你 debug 不开心,不妨试试写测试。