Можно ли запустить один тест в MiniTest?

Я могу запускать все тесты в одном файле с помощью

rake test TEST=path/to/test_file.rb

Однако, если я хочу запустить только один тест в этом файле, как бы я это сделал?

Я ищу аналогичную функциональность для:

rspec path/to/test_file.rb -l 25

Ответ 1

Я ищу аналогичную функциональность для rspec path/to/file.rb -l 25

Да! Используйте Ник Каранто "m" gem. С его помощью вы можете сказать:

m spec/my_spec.rb:25

Ответ 2

Команда должна быть:

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

Ответ 3

Вы пробовали:

ruby path/to/test_file.rb --name test_method_name

Ответ 5

Это одна из вещей, которые беспокоят меня о string name definition в тестах.

Если у вас есть:

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/

Ответ 6

Если вы используете MiniTest с Rails 5, лучший способ запустить все тесты в одном файле:

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

Ответ 7

Вы можете использовать это для запуска одного файла:

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

Я также использовал

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

для лучшего отображения.

Ответ 8

Есть два способа сделать это:

  • Запустите тесты "вручную" (см. ответ Andrew Grimm).
  • Hack Rake::TestTask target для использования другого загрузчика тестов.

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

Ответ 9

Вы можете передать --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

Этот флаг задокументирован в Minitests README.

Ответ 10

Если вы используете Turn gem с minitest, просто убедитесь, что используете опцию Turn.config.pattern, так как Run Minitest runner не учитывает параметр -name в ARG.

Ответ 11

Я использую ruby/path/to/test -n/distinguishable word/

Изменение: -n является сокращением для --name. distinguishable word может быть любая строка, которую вы указали в описании теста, я обычно использую какое-то случайное слово, которое, как я знаю, не будет присутствовать в описании других тестов.

Ответ 12

Следующий будет работать

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

Ответ 13

Я ищу аналогичную функциональность для:

rspec path/to/test_file.rb -l 25

Есть камень, который делает именно это: minitest-line.

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

из https://github.com/judofyr/minitest-line#minitest-line