193

以下を使用して、すべてのテストを単一のファイルで実行できます。

rake test TEST=path/to/test_file.rb

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

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

rspec path/to/test_file.rb -l 25
4

15 に答える 15

231

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

% rake test TEST=test/test_foobar.rb TESTOPTS="--name=test_foobar1 -v"
于 2012-05-18T20:50:18.277 に答える
162

やってみました:

ruby path/to/test_file.rb --name test_method_name
于 2011-03-13T22:24:19.207 に答える
51

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/
于 2012-02-16T11:28:12.447 に答える
46

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

Nick Quarantoの「m」ジェムを使用すると、次のように言うことができます。

m spec/my_spec.rb:25
于 2012-04-26T06:44:06.487 に答える
38

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

于 2016-08-29T07:04:02.350 に答える
25

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

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

私も使った

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

より良い表示のために。

于 2014-03-27T12:30:40.397 に答える
12

--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 に記載されています。

于 2014-08-13T03:49:01.063 に答える
12

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 の内部構造のために機能しません。これを修正するには、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
于 2011-04-25T09:17:37.230 に答える
1

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

于 2012-07-24T11:01:54.093 に答える
0

Rails バージョン4.2.11.3と Ruby バージョン2.4.7p357を使用しています。

以下は私のために働いた。

ruby -Itest <relative_minitest_file_path> --name /<test_name>/
于 2021-09-06T11:44:45.560 に答える