30

題して。

ruby test/functionals/whatevertest.rb が機能しないため、すべてrequire 'test_helper'をに置き換える必要がありますrequire File.dirname(__FILE__) + '/../test_helper'。何らかの理由で、これらのテスト テンプレートのほとんどにこのような問題があるため、回避できるハックがあるかどうかを確認したいと思います。

4

7 に答える 7

48

次の回答は、レールテストスイートから単一のテストを実行する方法? (スタックオーバーフロー)

しかし、非常に簡単に言えば、答えは次のとおりです。

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 依存関係を管理している場合は、次のようにテストを実行する必要があります。functionalunitbundle 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
于 2011-11-02T19:35:13.830 に答える
13

これを試して:

ruby -Ilib:test test/functionals/whatevertest.rb

于 2009-02-13T21:43:19.697 に答える
9

Linuxでは?試してみませんか(cd test && ruby functionals/whatevertest.rb)。そうしないと、現在のディレクトリがサブディレクトリに変更されるため、括弧は重要です。それはfork別のシェルであり、その中のサブディレクトリに移動し、テストを実行します。

于 2008-11-08T07:50:23.767 に答える
5

Rails 4 を使用している場合、rake はファイル/ディレクトリ引数をサポートします。例:

rake test test/unit/user_test.rb
rake test test/unit
于 2014-02-06T09:20:00.553 に答える
4

タイトルの質問に対する答えは次のようになります。

ruby unit/post_test.rb -n selected_test # use to run only one selected test

しかし、質問の本文については、tvanfossonが良い答えを出しました。

于 2010-08-26T17:25:35.870 に答える
4

これに無限の時間を費やした後、最終的に解決策を見つけました(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/"
于 2012-09-05T13:45:23.863 に答える
0

2 と 3 の最も一般的な方法は次のとおりです。

ruby -I テスト test/functional/your_test_file.rb

于 2012-04-27T07:35:13.300 に答える