新手问题 Rspec 是在 Rails 目前用的最多的测试框架吗?

wcc526 · 2014年04月29日 · 最后由 billy 回复于 2014年05月05日 · 6005 次阅读

发现 rails 有好多测试框架

Test::Unit Webrat Rspec Mocha Selenium Shoulda Watir Rcov Cucumber autotest

但是发现 Rspec 是实际中用的比较多的,是这样吗?

另外,大家在实践中真的有从头到尾实施 TDD 和 BDD 吗?写测试的性价比高吗?

核心逻辑要写,重构时要写。

还是自带的最多人用吧,rspec 第二?我是感觉的没有数据支持。

tdd 可以学习,明白是怎么回事,未必每个项目都要用,具体情况具体分析

测试框架大同小异,如果是入门我感觉 Test::Unit(现在变成 MiniTest)足矣。

顶楼列举的有些是测试工具而不是框架,是要和 Test::Unit 和 Rspec 搭配用的,所以只比较这两个。

从 Ruby Conf China 2013 的现场举手投票来看,Rspec 大概占到了 9 成。不过我是 Rspec 反对者,认为这套 DSL 徒增复杂性,不如 Test::Unit 简单明了。

写测试性价比高,推荐写够用的测试,但写多少是够有并没有标准,需要自己琢磨。

客官是喜欢 assert_equal(expect, actual) 还是 expect(actual).to eq(expect)

楼主把相关的测试工具和测试框架混在一起了。学测试并没有太高深的技术,一路走下来,就是不断的练习和参考别人的测试代码。

我其实,就是找个机会,说下自己对测试的看法。。。楼主忽略我吧!

如果你写一段代码,会想着试一试你的代码(应该每个人都这么写代码吧?)。把这个代码写下来,觉得就是最简单的测试。好处显而易见,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 不开心,不妨试试写测试。

Test::Unit 和 RSpec 各有支持者,让我想起豆腐脑的甜咸党之争

#7 楼 @yfractal 一不留神,又被人黑了。声明一下, 我是写测试的。 😄

#9 楼 @ruby_sky 重点是大神好吗!!!sorry... 误会了 :)

好贴。支持一下。

不写测试,怎么重构?不写测试的大神,代码一次定型?

#12 楼 @sufish 啥意思?重构和测试挂钩了?自动测试的概念出现前没有重构?重构基于测试?

#14 楼 @blacktulip 自动化测试是重构的 guard,你怎么保证重构没有破坏代码功能,靠手工测试?靠经验?大神是少数的。

#15 楼 @sufish 据我所知,重构概念出现远早于自动化测试概念

@blacktulip Martin Fowler 写重构一书就强调测试是一切重构的基础。单从概念上来说,我不知你没有测试怎么样保证重构不出问题。

#17 楼 @billy 我可以人肉测试...

@blacktulip 好吧,又发现一个人肉牛人。

#19 楼 @billy 开个玩笑,我感觉近几年的测试和以前的测试已经不大一样了,需要再想想,可能我的理解有点问题。

@blacktulip 你说的具体情况具体分析没错的。什么时候测,测什么,什么成本最低又保证效率,确实是艺术,就连 DHH 也不敢说是艺术家。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号