Jef*_*eff 3 ruby tdd rspec ruby-on-rails rspec2
我想开始使用RSpec为我的Rails应用程序编写测试,但是我有许多使用Test :: Unit编写的现有测试.我想继续只需从命令行运行所有测试(或所有单元测试,功能测试等),类似于
rake test:units
Run Code Online (Sandbox Code Playgroud)
或者其他什么,让它运行所有单元测试,无论它们是用Test :: Unit还是RSpec编写的.而且我绝对不想浪费大量时间将我现有的测试转换为RSpec; 这不是首发.
现在,我想我希望我的RSpec测试与我现有的测试,测试/单元,测试/功能等一起存在.实现这一目标的最佳方法是什么?或者这甚至是一个好主意?也就是说,我对RSpec(以及Ruby和Rails)很新,所以也许保持RSpec分离是一种更好的做法.不管它们存储在文件系统的哪个位置,我仍然需要能够使用单个rake任务运行所有测试,并且我需要使用rcov收集整个测试语料库的代码覆盖率数字,我已经在做我现有的测试了.
编辑:修复了一些关于Rspec rails目录结构的错误陈述.
Rspec通常将其测试放在一个单独的目录结构中,spec/如下所示:
spec/
??? controllers
? ??? pages_controller_spec.rb
? ??? users_controller_spec.rb
??? helpers
? ??? pages_helper_spec.rb
? ??? users_helper_spec.rb
??? models
? ??? user_spec.rb
??? spec_helper.rb
??? views
??? pages
? ??? home.html.haml_spec.rb
??? users
??? index.html.haml_spec.rb
??? show.html.haml_spec.rb
Run Code Online (Sandbox Code Playgroud)
它有一个单独的模型,控制器和视图目录.我不确定Test :: Unit究竟是如何构建其目录的,但这是Rspec的默认目录结构.记下spec_helper.rb文件.该文件告诉Rspec在哪里查找规范,并有一些其他配置选项.
你最好的选择可能就是遵循rspec的最佳实践来制作一个spec目录,并制定你自己的rake任务,同时运行单元测试和rspec测试.像这样的东西:
task :run_tests do
system("rspec spec/")
system("rake test:units")
end
Run Code Online (Sandbox Code Playgroud)
那将运行你的rspec测试,然后轮流你的Test :: Unit测试.
| 归档时间: |
|
| 查看次数: |
2331 次 |
| 最近记录: |