web-dev-qa-db-ja.com

MiniTestで単一のテストを実行することは可能ですか?

私はすべてのテストを単一のファイルで実行できます:

rake test TEST=path/to/test_file.rb

ただし、そのファイルでテストを1つだけ実行したい場合、どうすればよいですか?

私は同様の機能を探しています:

rspec path/to/test_file.rb -l 25
153
Josiah Kiehl

Rspec path/to/file.rb -l 25と同様の機能を探しています

うん! Nick Quarantoの "m" gem を使用します。それであなたは言うことができます:

m spec/my_spec.rb:25
43
Elliot Winkler

コマンドは次のようになります。

% rake test TEST=test/test_foobar.rb TESTOPTS="--name=test_foobar1 -v"
197
jduan

やってみました:

Ruby path/to/test_file.rb --name test_method_name
144
Andrew Grimm

これは、テストの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/
48
fguillen

Gemは不要です:Ruby -Itest test/lib/test.rb --name /some_test/

ソース: http://blog.arvidandersson.se/2012/03/28/minimalicous-testing-in-Ruby-1-9

48
randomor

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 を参照してください

24
Derek Hill

これを使用して、単一のファイルを実行できます。

rake test TEST=test/path/to/file.rb

私も使った

Ruby -I"lib:test" test/path/to/file.rb

表示を改善します。

21
tuhaj

それを行うには2つの方法があります。

  1. テストを「手動で」実行します(Andrew Grimmの回答を参照)。
  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
11

--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で

8
Rimian

Turn gemをminitestで使用している場合、Turn MinitestランナーはARGの--nameオプションを尊重しないため、必ずTurn.config.patternオプションを使用してください。

1
Laknath

以下が動作します

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
0
Bibin Venugopal

Ruby /path/to/test -n /distinguishable Word/を使用します

編集:-n--nameの短縮形です。 distinguishable Wordには、テストの説明に含める任意の文字列を指定できます。通常、他のテストの説明には含まれないことがわかっているランダムなWordを使用します。

0
sloneorzeszki

私は同様の機能を探しています:

rspec path/to/test_file.rb -l 25

まさにそれを行うgemがあります:minitest-line

gem install minitest-line
Ruby test/my_file -l 5

from https://github.com/judofyr/minitest-line#minitest-line

0
knugie