Следующий ответ основан на: Как запустить отдельный тест из набора тестов 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
в приведенных выше примерах. И если вы используете bundler для управления гем-зависимостями вашего приложения, вам придется выполнить тесты с 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
- это удобный метод. Следующие два метода эквивалентны :
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