如何从rails测试套件中运行单个测试?
rake test ANYTHING
似乎无济于事。
答案 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
答案 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”(在此处进行测试)