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


Я могу выполнить все тесты в одном файле с:

rake test TEST=path/to/test_file.rb

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

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

rspec path/to/test_file.rb -l 25
11 136

11 ответов:

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

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

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 в тестах.

если вы:

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/

не требуется драгоценный камень: ruby -Itest test/lib/test.rb --name /some_test/

Источник:http://blog.arvidandersson.se/2012/03/28/minimalicous-testing-in-ruby-1-9

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

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

Я тоже

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

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

Если вы используете 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

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

  1. запуск тестов "вручную" (см. ответ Эндрю Гримма).
  2. Hack Rake::TestTask цель использовать другой загрузчик тесты.

Rake::TestTask (от рейка 0.8.7) теоретически способен передать дополнительные опции в MiniTest::Unit С "TESTOPTS=blah-blah" параметр командной строки, например:

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

на практике, параметр --name (фильтр для имен тестов) не будет работать, из-за внутренних грабель. Чтобы исправить это, вы будете нужно написать небольшой патч обезьяны в вашем 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

вы можете на самом деле запустить только имя или даже номер:

-n, --name PATTERN               Filter run on /pattern/ or string.

например:

ruby spec/stories/foo_spec.rb --name 3

FAIL (0:00:00.022) test_0003_has foo
Expected: "foo"
Actual: nil

см.:https://github.com/seattlerb/minitest

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

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

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