我正在学习Rails这个古老的方式。通过阅读Agile Web Development with Rails(第3版)作为起点。我目前正在教授测试的章节。我也知道其他BDD测试框架,如RSPec。所以我想知道RSpec,Cucumber,Shoulda等框架是否取代了知道/使用Test :: Unit的需要?它们本身是否相关并用于不同目的?
更新:由于我是测试的新手,我也希望获得有关哪些资源对于了解不同框架有用的反馈。
谢谢!
答案 0 :(得分:16)
世界变了!检查并upvote @prusswan
我认为即使围绕BDD和其他测试工具进行大量炒作,Test :: Unit仍然具有相关性。
话虽如此,如果你愿意,你可以绕过学习Test :: Unit并立即开始使用像RSpec和Shoulda这样的东西,但是通过敏捷Web开发中的示例可以说明一些事情。预订BDD的想法来自哪里。
我发现自己仍然在某些项目中使用Test :: Unit,因为它附带了Rails,并且仍然是一个非常棒的测试框架。
长话短说,我不认为它已经过时了,但它不再是最前沿的。 BDD是一种测试范式的转变,特别是如果你开始使用Cucumber和Webrat,但是一旦你进入它就太棒了。 Shoulda是最容易转换的,所以我先从Test :: Unit开始,然后转到Shoulda,然后试试RSpec和Cucumber。
您正在测试或至少对测试感兴趣!那是最好的部分。最后,只要你对它感到满意,你使用什么并不重要。
祝你好运!答案 1 :(得分:7)
RSpec offends me aesthetically with no discernible benefit for its added complexity over test/unit.
如果您有兴趣,请继续阅读这些twits的推文。
答案 2 :(得分:6)
我想我会发布2012年的更新:
在three main和current(可用于Rails 3.2,只有一些小修改)的RoR入门书籍中,其中两本正在使用Rspec(最多使用Rspec) Test :: Unit的简短提及,其中一个正在为next edition计划甚至 moar Rspec,所以很明显谁现在将成为这场“战斗”的赢家
并允许我有选择地引用dhh:
重要的是我们让人们进行测试,所以工具不应该太重要。
2014年再访:
Minitest现在取代了当前版本的Rails中的Test :: Unit作为默认值。就我个人而言,由于种种原因,我认为它与其前身相比值得仔细研究 -
答案 3 :(得分:4)
Rspec是一个完全独立的测试框架。 Shoulda是对Rails的内置框架Test :: Unit的增强。如果您正在使用Shoulda,那么您使用的是Test :: Unit,但它具有更多功能和更简单,更易读的语法。
我已经尝试过Rspec和Shoulda,对我来说,Shoulda会赢得胜利。我更喜欢它。但这可能是一种品味问题。
请注意you can use Cucumber with Shoulda。
其他资源?我推荐ZenTest和RedGreen宝石。 ZenTest提供自动测试,可让您在每次更改文件时自动运行测试。这是一个很大的帮助。
关于灯具与工厂,如果您需要设置一堆相互关联的对象,您正在测试双方或亲子关系和/或测试多对多关系,灯具的工作效果要好得多。实际上我甚至不确定你能用工厂做到这一点。所以不要解雇灯具 - 它们有用途。
答案 4 :(得分:1)
有很多人仍然喜欢Test :: Unit,在某种程度上,这是个人喜好。但是,总的来说,您会在RSpec前端找到更多活动。非常酷的东西都是用RSpec和Cucumber完成的,所以如果你自己没有个人喜好,我可能会跳过Test :: Unit。但是,你应该熟悉它来阅读别人用它编写的测试,但我不会预见到这是一个问题。