Можно ли запустить один тест в MiniTest?
Я могу выполнить все тесты в одном файле с:
rake test TEST=path/to/test_file.rb
однако, если я хочу запустить только один тест в этом файле, как это сделать?
Я ищу аналогичную функциональность:
rspec path/to/test_file.rb -l 25
11 ответов:
Я ищу аналогичную функциональность для RSpec path/to / file.rb-l 25
Юп! Используйте драгоценный камень "м" Ника Куранто. С его помощью можно сказать:
m spec/my_spec.rb:25
это одна из вещей, которые беспокоят меня о
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 способа сделать это:
- запуск тестов "вручную" (см. ответ Эндрю Гримма).
- 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
Если вы используете Turn gem с minitest, просто убедитесь, что используете
Turn.config.pattern
опция, так как Turn Minitest runner не уважает опцию --name В ARGs.