以下を使用して、すべてのテストを単一のファイルで実行できます。
rake test TEST=path/to/test_file.rb
しかし、そのファイルで 1 つのテストだけを実行したい場合、どうすればよいでしょうか?
同様の機能を探しています:
rspec path/to/test_file.rb -l 25
以下を使用して、すべてのテストを単一のファイルで実行できます。
rake test TEST=path/to/test_file.rb
しかし、そのファイルで 1 つのテストだけを実行したい場合、どうすればよいでしょうか?
同様の機能を探しています:
rspec path/to/test_file.rb -l 25
コマンドは次のようになります。
% rake test TEST=test/test_foobar.rb TESTOPTS="--name=test_foobar1 -v"
やってみました:
ruby path/to/test_file.rb --name test_method_name
string name definition
これは、テストで私を悩ませていることの1つです。
あなたが持っているとき:
def test_my_test
end
テストの名前を常に知っているので、次のように実行できます。
ruby my_test -n test_my_test
しかし、あなたが次のようなものを持っているとき:
it "my test" do
end
このテストが実際に内部でどのように命名されているかわからないため、この-n
オプションを直接使用することはできません。
このテストが内部でどのように命名されているかを知るには、オプションしかありません。ファイル全体を実行して、ログを調べてみてください。
私の回避策は、(一時的に)次のような非常にユニークなものをテスト名に追加することです。
it "my test xxx" do
end
次に、次のような「-n」パラメータの正規表現バージョンを使用します。
ruby my_test.rb -n /xxx/
rspec path / to / file.rb-l25と同様の機能を探しています
Nick Quarantoの「m」ジェムを使用すると、次のように言うことができます。
m spec/my_spec.rb:25
Rails 5+ で MiniTest を使用している場合、単一のファイルですべてのテストを実行する最良の方法は次のとおりです。
bin/rails test path/to/test_file.rb
単一のテストの場合 (例: 25 行目):
bin/rails test path/to/test_file.rb:25
http://guides.rubyonrails.org/testing.html#the-rails-test-runnerを参照してください
これを使用して、単一のファイルを実行できます。
rake test TEST=test/path/to/file.rb
私も使った
ruby -I"lib:test" test/path/to/file.rb
より良い表示のために。
--name
名前または名前内の数字でテストを実行するために渡すことができます。
-n, --name PATTERN Filter run on /regexp/ or string.
例えば:
$ ruby spec/stories/foo_spec.rb --name 3
FAIL (0:00:00.022) test_0003_has foo
Expected: "foo"
Actual: nil
このフラグはMinitest の README に記載されています。
2 つの方法があります。
Rake::TestTask
して、別のテスト ローダーを使用します。Rake::TestTask
(rake 0.8.7 以降) 理論的にはMiniTest::Unit
、"TESTOPTS=blah-blah"
コマンド ライン オプションを使用して追加のオプションを渡すことができます。たとえば、次のようになります。
% rake test TEST=test/test_foobar.rb TESTOPTS="--name test_foobar1 -v"
実際には、オプション--name
(テスト名のフィルター) は、rake の内部構造のために機能しません。これを修正するには、Rakefile に小さなモンキー パッチを書き込む必要があります。
# overriding the default rake tests loader
class Rake::TestTask
def rake_loader
'test/my-minitest-loader.rb'
end
end
# our usual test terget
Rake::TestTask.new {|i|
i.test_files = FileList['test/test_*.rb']
i.verbose = true
}
このパッチでは、ファイルを作成する必要がありますtest/my-minitest-loader.rb
:
ARGV.each { |f|
break if f =~ /^-/
load f
}
Minitest のすべての可能なオプションを表示するには、次のように入力します。
% ruby -r minitest/autorun -e '' -- --help
Turn.config.pattern
Minitest で Turn gem を使用している場合は、Turn Minitest ランナーが ARG の --name オプションを尊重しないため、必ずオプションを使用してください。
Rails バージョン4.2.11.3と Ruby バージョン2.4.7p357を使用しています。
以下は私のために働いた。
ruby -Itest <relative_minitest_file_path> --name /<test_name>/