如何从rails测试套件运行单个测试?

时间:2009-10-01 22:09:07

标签: ruby-on-rails unit-testing rake

如何从rails测试套件中运行单个测试?

rake test ANYTHING似乎无济于事。

12 个答案:

答案 0 :(得分:136)

注意: 这不会通过rake运行测试。因此,Rakefile中的任何代码都不会被执行。

要运行单个测试,请使用rails项目主目录中的以下命令:

ruby -I test test/unit/my_model_test.rb -n test_name

这将运行名为“name”的单个测试,该测试在指定文件的MyModelTest类中定义。 test_name是通过获取测试名称,在其前面加上单词“test”,然后用下划线分隔单词而形成的。例如:

class MyModelTest < ActiveSupport::TestCase

  test "valid with good attributes" do
    # do whatever you do
  end

  test "invalid with bad attributes" do
    # do whatever you do
  end
end

您可以通过以下方式运行这两项测试:

ruby -I test test/unit/my_model_test.rb

通过

进行第二次测试
ruby -I test test/unit/my_model_test.rb -n test_invalid_with_bad_attributes

答案 1 :(得分:73)

运行测试文件

rake test TEST=tests/functional/accounts_test.rb

在测试文件中运行单一测试

rake test TEST=tests/functional/accounts_test.rb TESTOPTS="-n /paid accounts/"

(来自@Puhlze的评论。)

答案 2 :(得分:31)

对于rails 5:

rails test test/models/my_model.rb

答案 3 :(得分:22)

感谢@James,答案似乎是:

rails test test/models/my_model.rb:22

假设22是给定测试的行号。根据rails帮助:

 $ rails test --help
     

您可以通过在文件名中附加行号来运行单个测试:

    bin/rails test test/models/user_test.rb:27

此外,请注意您的测试应该继承ActionDispatch :: IntegrationTest以实现此功能(这是我的错误):

class NexApiTest < ActionDispatch::IntegrationTest
.
.
.

答案 4 :(得分:9)

在rails 5中,

我用这种方式运行单个测试文件(所有测试都在一个文件中)

rails test -n /TopicsControllerTest/ -v

看这里 https://stackoverflow.com/a/41183694/3626659

答案 5 :(得分:5)

在实际的Rails套件中运行单个测试:

bundle exec ruby -I"railties/test" actionpack/test/template/form_options_helper_test.rb

答案 6 :(得分:3)

这是我的一个愚蠢的午夜问题。 Rails友好地打印它在rake test上执行的命令。剩下的就是剪切和粘贴练习。

~/projects/rails/actionpack (my2.3.4)$ ruby -I"lib:test" "/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake/rake_test_loader.rb" "test/controller/base_test.rb"

答案 7 :(得分:1)

如果要运行单个测试,可以将它们作为常规Ruby脚本运行

ruby actionmailer/test/mail_layout_test.rb

您还可以通过cd运行整个套件(例如ActiveRecord或ActionMailer) - 进入目录并在其中运行rake test

答案 8 :(得分:1)

最好的方法是直接查看指南:http://guides.rubyonrails.org/contributing_to_ruby_on_rails.html#running-tests

cd actionmailer
bundle exec ruby -w -Itest test/mail_layout_test.rb -n test_explicit_class_layout

答案 9 :(得分:1)

在我的情况下,rake仅适用于TESTOPTS="-n='/sample/'"

bundle exec rake test TEST=test/system/example_test.rb TESTOPTS="-n='/sample/'"

答案 10 :(得分:0)

首先,访问要测试的lib文件夹(这很重要),然后运行:

~/Projects/rails/actionview (master)$ ruby -I test test/template/number_helper_test.rb 

答案 11 :(得分:0)

Rails文件夹

  bundle install
  bundle exec ruby -I"activerecord/test" activerecord/test/cases/relation/where_test.rb 

请注意,您需要加载适当的文件夹:“ activerecord / test”(在此处进行测试)

相关问题