Я могу запустить все тесты в одном файле с:
rake test TEST=path/to/test_file.rb
Однако, если я хочу выполнить только один тест в этом файле, как бы я это сделал?
Я ищу похожую функциональность для:
rspec path/to/test_file.rb -l 25
Я могу запустить все тесты в одном файле с:
rake test TEST=path/to/test_file.rb
Однако, если я хочу выполнить только один тест в этом файле, как бы я это сделал?
Я ищу похожую функциональность для:
rspec path/to/test_file.rb -l 25
Ответы:
Я ищу аналогичную функциональность для rspec path / to / file.rb -l 25
Ага! Используйте драгоценный камень Ника Кваранто "m" . С его помощью вы можете сказать:
m spec/my_spec.rb:25
m
в настоящее время не работает этот Minitest 5.0 .
Команда должна быть:
% rake test TEST=test/test_foobar.rb TESTOPTS="--name=test_foobar1 -v"
TESTOPTS=...
далеко
-v
?
Ты пробовала:
ruby path/to/test_file.rb --name test_method_name
specify {}
? Они просто отображаются как test_0001_anonymous
... и может быть несколько test_0001_anonymous
s, если один и тот же синтаксис используется в нескольких блоках описания ... какие-либо предложения по запуску отдельных тестов в такой среде?
cannot load such file -- test_helper
.
ruby -Itest path/to/tc_file.rb --name test_method_name
как stackoverflow.com/a/15714985/327786
bundle exec ruby -I lib path/to --name test_fit
Драгоценный камень не требуется:
ruby -Itest test/lib/test.rb --name /some_test/
Источник: http://blog.arvidandersson.se/2012/03/28/minimalicous-testing-in-ruby-1-9
Это одна из вещей, которая беспокоит меня 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/
__method__
контекст текущего выполняемого метода (в данном случае, вашего теста). Настоящая реализация приводит к чему-то вроде "does not break my stuff".gsub(" ", "_").prepend("test_")
. Затем запустите, например ruby -Itest test/integration/stuff_flow_test.rb --name test_does_not_break_my_stuff
,.
Если вы используете 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 способа сделать это:
Rake::TestTask
цель, чтобы использовать другой загрузчик тестов.Rake::TestTask
(из грабли 0.8.7) теоретически может передавать дополнительные параметры MiniTest::Unit
с помощью параметра "TESTOPTS=blah-blah"
командной строки, например:
% rake test TEST = test / test_foobar.rb TESTOPTS = "- имя 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
rake
(0.9.2) и патч обезьян не требуется.
TESTOPTS="--name test_foobar"
не работает, но TESTOPTS="--name=test_foobar"
работает.
Вы можете пройти --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
Этот флаг задокументирован в README Минитеста .
Если вы используете Turn gem с minitest, просто используйте Turn.config.pattern
опцию, поскольку бегун Turn Minitest не учитывает опцию --name в ARG.
name
возможность. Спасибо! Поскольку этот поворот больше не поддерживается, я планирую мигрировать на minitest-репортеров
Я ищу похожую функциональность для:
rspec path / to / test_file.rb -l 25
Существует драгоценный камень , который делает именно это: minitest-line
.
gem install minitest-line
ruby test/my_file -l 5
я использую ruby /path/to/test -n /distinguishable word/
Изменить:
-n
это сокращение для --name
. distinguishable word
это может быть любая строка, которую вы указали в описании теста, я обычно использую какое-то случайное слово, которое, как я знаю, не будет присутствовать в описании других тестов.
-n
параметр?
--name
. Просто удобная вещь. Особенно полезно с / regex /, я обычно просто помещаю какое-то случайное слово в название теста (которое, я знаю, не будет присутствовать в описании других тестов).
Следующий будет работать
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
rails test path/to/test_file.rb:25
смотрите @Derek_Hill ans - взято с guides.rubyonrails.org/testing.html#the-rails-test-runner