代码之家  ›  专栏  ›  技术社区  ›  Jeff

我应该如何将RSPEC与RAKE、Rails和我现有的测试集成在一起?

  •  3
  • Jeff  · 技术社区  · 15 年前

    我想开始使用RSPEC编写Rails应用程序的测试,但是我有很多使用Test::Unice编写的现有测试。我想继续能够简单地从命令行运行所有的测试(或者所有的单元测试、功能测试等),比如

    rake test:units
    

    或者,让它运行所有的单元测试,不管它们是用Test::unit还是RSpec编写的。我绝对不想浪费一堆时间把我现有的测试转换成自动测试,这是一个不启动。

    现在我想我希望我的RSPEC测试与我现有的测试、测试/单元、测试/功能等一起存在。什么是实现这一目标的最好方法?或者这是个好主意?也就是说,我对RSpec(还有Ruby和Rails)还不太熟悉,所以最好将RSpec分开。然而,不管它们存储在文件系统上的何处,我仍然需要能够用单个RAKE任务运行所有的测试,并且我需要使用RCOV来收集整个测试语料库的代码覆盖率。

    1 回复  |  直到 15 年前
        1
  •  6
  •   Jamison Dance    15 年前

    编辑: 修正了一些关于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
    

    它有一个单独的目录用于模型、控制器和视图。我不确定Test::Unit是如何构造其目录的,但这是Rspec的默认目录结构。注意 spec_helper.rb 文件。这个文件告诉Rspec在哪里查找spec,还有一些其他配置选项。

    你最好的选择可能只是遵循rspec的最佳实践 spec dir,并创建自己的rake任务来运行单元测试和rspec测试。像这样的:

    task :run_tests do
      system("rspec spec/")
      system("rake test:units")
    end
    

    这将依次运行rspec测试和Test::Unit测试。

    推荐文章