Я можу запустити всі тести в одному файлі за допомогою:
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
Є два способи зробити це:
Rake::TestTask
ціль, щоб використовувати інший тестовий завантажувач.Rake::TestTask
(з граблів 0.8.7) теоретично здатний передавати додаткові параметри до MiniTest::Unit
а"TESTOPTS=blah-blah"
параметром командного рядка, наприклад:
% тест граблі 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
Цей прапор задокументований у програмі REITME Minitest .
Якщо ви використовуєте Turn gem з minitest, просто переконайтеся, що ви користуєтесь Turn.config.pattern
опцією, оскільки бігун Turn Minitest не дотримується --name в ARG.
name
варіант. Дякую! Оскільки цього Повороту більше не підтримують, я планую перейти на міні-репортерів
Я шукаю аналогічні функції:
rspec шлях / до / 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