私はすべてのテストを単一のファイルで実行できます:
rake test TEST=path/to/test_file.rb
ただし、そのファイルでテストを1つだけ実行したい場合、どうすればよいですか?
私は同様の機能を探しています:
rspec path/to/test_file.rb -l 25
Rspec path/to/file.rb -l 25と同様の機能を探しています
うん! Nick Quarantoの "m" gem を使用します。それであなたは言うことができます:
m spec/my_spec.rb: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
次に、RegExバージョンの '-n'パラメーターを使用します。
Ruby my_test.rb -n /xxx/
Gemは不要です:Ruby -Itest test/lib/test.rb --name /some_test/
ソース: http://blog.arvidandersson.se/2012/03/28/minimalicous-testing-in-Ruby-1-9
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
表示を改善します。
それを行うには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 internalsのために機能しません。これを修正するには、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
--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で 。
Turn gemをminitestで使用している場合、Turn MinitestランナーはARGの--nameオプションを尊重しないため、必ずTurn.config.pattern
オプションを使用してください。
以下が動作します
def test_abc
end
test "hello world"
end
これは
bundle exec Ruby -I test path/to/test -n test_abc
bundle exec Ruby -I test path/to/test -n test_hello_Word
Ruby /path/to/test -n /distinguishable Word/
を使用します
編集:-n
は--name
の短縮形です。 distinguishable Word
には、テストの説明に含める任意の文字列を指定できます。通常、他のテストの説明には含まれないことがわかっているランダムなWordを使用します。
私は同様の機能を探しています:
rspec path/to/test_file.rb -l 25
まさにそれを行うgemがあります:minitest-line
。
gem install minitest-line
Ruby test/my_file -l 5