題して。
ruby test/functionals/whatevertest.rb が機能しないため、すべてrequire 'test_helper'
をに置き換える必要がありますrequire File.dirname(__FILE__) + '/../test_helper'
。何らかの理由で、これらのテスト テンプレートのほとんどにこのような問題があるため、回避できるハックがあるかどうかを確認したいと思います。
題して。
ruby test/functionals/whatevertest.rb が機能しないため、すべてrequire 'test_helper'
をに置き換える必要がありますrequire File.dirname(__FILE__) + '/../test_helper'
。何らかの理由で、これらのテスト テンプレートのほとんどにこのような問題があるため、回避できるハックがあるかどうかを確認したいと思います。
次の回答は、レールテストスイートから単一のテストを実行する方法? (スタックオーバーフロー)
しかし、非常に簡単に言えば、答えは次のとおりです。
ruby -I test test/functional/whatevertest.rb
特定の functional
テストでは、次を実行します。
ruby -I test test/functional/whatevertest.rb -n test_should_get_index
(上記のように) テスト名のスペースの場所にアンダースコアを入れるか、次のようにタイトルを引用します。
ruby -I test test/functional/whatevertest.rb -n 'test should get index'
テストの場合、上記の例では に置き換えるunit
だけであることに注意してください。また、バンドラーを使用してアプリケーションの gem 依存関係を管理している場合は、次のようにテストを実行する必要があります。functional
unit
bundle exec
bundle exec ruby -I test test/unit/specific_model_test.rb
bundle exec ruby -I test test/unit/specific_model_test.rb -n test_divide_by_zero
bundle exec ruby -I test test/unit/specific_model_test.rb -n 'test divide by zero'
最も重要な-n
ことは、スイッチへの引数がテストの名前であり、名前を引用しているかどうかに応じてスペースまたはアンダースコアを付けて、その前に「テスト」という単語が追加されていることに注意してください。その理由はtest
、便利な方法です。次の 2 つの方法は同等です。
test "should get high" do
assert true
end
def test_should_get_high
assert true
end
...そして、次のいずれかとして実行できます (同等です)。
bundle exec ruby -I test test/integration/misc_test.rb -n 'test should get high'
bundle exec ruby -I test test/integration/misc_test.rb -n test_should_get_high
これを試して:
ruby -Ilib:test test/functionals/whatevertest.rb
Linuxでは?試してみませんか(cd test && ruby functionals/whatevertest.rb)
。そうしないと、現在のディレクトリがサブディレクトリに変更されるため、括弧は重要です。それはfork
別のシェルであり、その中のサブディレクトリに移動し、テストを実行します。
Rails 4 を使用している場合、rake はファイル/ディレクトリ引数をサポートします。例:
rake test test/unit/user_test.rb
rake test test/unit
タイトルの質問に対する答えは次のようになります。
ruby unit/post_test.rb -n selected_test # use to run only one selected test
しかし、質問の本文については、tvanfossonが良い答えを出しました。
これに無限の時間を費やした後、最終的に解決策を見つけました(Rails 3.0.7で):
ruby -I test test/functional/users_controller_test.rb -n "/the_test_name/"
これは、コマンド内のアンダーバー (_) でのみ機能することに注意してください。スペースでは機能しません!
スペースを含むテストを次のように定義します。
test "the test name" do
このソリューションではパターン マッチングを使用するため、テスト名の一部を使用できます。テストが「should do foo」である場合、次のいずれかも同様に機能します。
ruby -I test test/functional/alerts_controller_test.rb -n "/foo/"
ruby -I test test/functional/alerts_controller_test.rb -n "/do_foo/"
次の (スペースを含む)は機能しません。
ruby -I test test/functional/alerts_controller_test.rb -n "/do foo/"
2 と 3 の最も一般的な方法は次のとおりです。
ruby -I テスト test/functional/your_test_file.rb