Как название.
ruby test / functionals / Anytest.rb не работает, поэтому мне нужно заменить все require 'test_helper' на require File.dirname(__FILE__) + '/../test_helper'. По какой-то причине у большинства этих тестовых шаблонов есть такая проблема, поэтому я предпочитаю посмотреть, есть ли хак, который я могу обойти.





В Linux? почему бы не попробовать (cd test && ruby functionals/whatevertest.rb). Обратите внимание: круглые скобки важны, так как в противном случае ваш текущий каталог изменится на подкаталог. Он делает fork другой оболочкой, переходит в ее подкаталог и запускает тест.
этот подходит. Я немного изменил его на (cd test && rubyfunction / whatsoevertest.rb), чтобы он правильно работал с относительной структурой каталогов. Имеет смысл :)
Попробуй это:
ruby -Ilib: тестовый тест / функционалы / whattest.rb
На самом деле я запускаю его с помощью: ruby -I test test /function / anytest.rb, но в итоге получается то же самое.
Ответ на заглавный вопрос будет таким:
ruby unit/post_test.rb -n selected_test # use to run only one selected test
но на основной вопрос tvanfosson дал хороший ответ.
Я получил следующую ошибку: <internal:lib/rubygems/custom_require>:29:in require ': нет такого файла для загрузки - test_helper (LoadError) `Работает ли он с функциональным тестом?
Следующий ответ основан на: Как запустить одиночный тест из набора тестов rails? (stackoverflow)
Но очень кратко, вот ответ:
ruby -I test test/functional/whatevertest.rb
Для теста специфическийfunctional запустите:
ruby -I test test/functional/whatevertest.rb -n test_should_get_index
Просто поставьте подчеркивание в местах пробелов в именах тестов (как указано выше) или процитируйте заголовок следующим образом:
ruby -I test test/functional/whatevertest.rb -n 'test should get index'
Обратите внимание, что для тестов unit просто замените functional на unit в приведенных выше примерах. И если вы используете упаковщик для управления зависимостями гемов вашего приложения, вам придется выполнять тесты с bundle exec следующим образом:
bundle exec ruby -I test test/unit/specific_model_test.rb
bundle exec ruby -I test test/unit/specific_model_test.rb -n test_divide_by_zero
bundle exec ruby -I test test/unit/specific_model_test.rb -n 'test divide by zero'
Самое главное, обратите внимание, что аргумент переключателя -n - название теста и слово "тест" перед ним с пробелами или подчеркиванием в зависимости от того, цитируете ли вы имя или нет. Причина в том, что test - удобный метод. Следующие два метода - эквивалент:
test "should get high" do
assert true
end
def test_should_get_high
assert true
end
... и может выполняться как либо из следующих (это эквивалент):
bundle exec ruby -I test test/integration/misc_test.rb -n 'test should get high'
bundle exec ruby -I test test/integration/misc_test.rb -n test_should_get_high
Спасибо, что было полезно. Стандартный каталог: test / function / вместо test / functionals /, поэтому я отредактировал ваш ответ. Спасибо
Ой .. спасибо за редактирование! Я, должно быть, по ошибке подсунул туда s, потому что иногда я выполняю только функциональные тесты через bundle exec rake test:functionals, что во множественном числе. Примечание: то же самое для запуска всех модульных тестов ... просто замените functionals на units.
@BSeven Какую версию Ruby вы используете с Rails 3.0.7?
@BSe Даже что конкретно из того, что вы пробовали, не работает (вы сказали "это")? Я предполагаю, что вы пробовали все, что описано выше, и в этом случае вам следует попробовать -n test_the_name_of_your_test, где test_the_name_of_your_test - это «имя вашего теста» с test_ перед ним (и подчеркивания вместо пробелов). Например, -n test_should_create_item.
@ user664833 - «Это» - это ruby -I test test/functional/whatevertest.rb -n selected_test и ruby -I test test/functional/whatevertest.rb -n 'selected test w long name'. Подготовка test_ не помогла. Во всех трех случаях на выходе будет «0 тестов, 0 утверждений, 0 сбоев, 0 ошибок».
Я только что установил rails 3.0.7 и создал новое «депо» приложение (rails new depot), cd depot, bundle install (для установки sqlite3), rails g scaffold User name:string, bundle exec rake db:migrate, RAILS_ENV=test bundle exec rake db:migrate, а затем я провел следующие тесты с ruby 1.9.2p290, и все они работали: ruby -I test test/unit/user_test.rb и ruby -I test test/unit/user_test.rb -n test_the_truth и ruby -I test test/unit/user_test.rb -n 'test_the_truth'. Настоящее название теста - «правда». Кроме того, я нахожусь в корневой каталог приложения.
@ user664833 - Хорошо, я прошел через этот процесс, и все 3 команды сработали. Я предполагаю, что есть что-то с моими драгоценными камнями или исправлением обезьяны в моем другом проекте, что нарушает эту функциональность. Это сработало и для функционального теста. Важно знать, что перед названием теста должно стоять test: test_the_truth.
@BSeven Я обновил ответ, чтобы отразить это. Извините, что ввел в заблуждение.
наиболее распространенный метод для 2 и 3:
ruby -I test test / функционал / your_test_file.rb
Потратив на это бесконечные часы, я наконец нашел решение (в Rails 3.0.7):
ruby -I test test/functional/users_controller_test.rb -n "/the_test_name/"
Обратите внимание: это работает только с подчеркиванием (_) в команде. Не работает с пробелами!
Определите тест с пробелами как:
test "the test name" do
В этом решении используется сопоставление с образцом, поэтому вы можете использовать часть имени теста. Если тестом является «должен делать foo», то подойдет любой из следующих вариантов.
ruby -I test test/functional/alerts_controller_test.rb -n "/foo/"
ruby -I test test/functional/alerts_controller_test.rb -n "/do_foo/"
Следующее (с пробелами) не будет работать:
ruby -I test test/functional/alerts_controller_test.rb -n "/do foo/"
Я обнаружил, что если вы избежите "пробела" в шаблоне, это сработает. Примерно так работает: ruby -I test test / my_test.rb -n "/ do \ foo /"
почему-то оставив пробелы у меня сработало, я ruby -v ruby 1.9.3p484 и >> Rails::version => "2.3.18"
Если вы используете Rails 4, то rake поддерживает аргументы файла / каталога. Пример:
rake test test/unit/user_test.rb
rake test test/unit
Возможный дубликат Как запустить одиночный тест из набора тестов rails?