Ответы:
ПРИМЕЧАНИЕ. Это не запускает тест через rake
. Таким образом, любой код, который у вас есть Rakefile
, НЕ будет выполнен.
Чтобы запустить один тест, используйте следующую команду из основного каталога вашего проекта rails:
ruby -I test test/unit/my_model_test.rb -n test_name
Это запускает единственный тест с именем «name», определенный в классе MyModelTest в указанном файле. Test_name формируется путем добавления к имени теста слова «test» и последующего разделения слов подчеркиванием. Например:
class MyModelTest < ActiveSupport::TestCase
test "valid with good attributes" do
# do whatever you do
end
test "invalid with bad attributes" do
# do whatever you do
end
end
Вы можете запустить оба теста с помощью:
ruby -I test test/unit/my_model_test.rb
и только второй тест через
ruby -I test test/unit/my_model_test.rb -n test_invalid_with_bad_attributes
0 tests, 0 assertions, 0 failures, 0 errors
. Рельсы 3.0.7.
-n "/good/"
. Экранирование оболочки - это всегда весело, поэтому я предпочитаю использовать простые регулярные выражения, но это намного проще, чем постоянно писать полное имя теста.
test/
папку. Например, если я хочу запустить тест, activesupport/test/core_ext/array_ext_test.rb
я должен быть activesupport/
первым.
-n "/good/"
работал.
Запустите тестовый файл :
rake test TEST=tests/functional/accounts_test.rb
Запустите один тест в тестовом файле:
rake test TEST=tests/functional/accounts_test.rb TESTOPTS="-n /paid accounts/"
(Из комментария @Puhlze.)
rake test TEST=tests/functional/accounts_test.rb TESTOPTS="-n '/paid accounts/'"
(в /paid accounts/
одинарных кавычках)
Для рельсов 5:
rails test test/models/my_model.rb
bin/rails test test/models/user_test.rb:27
Благодаря @James ответ, кажется, таков:
rails test test/models/my_model.rb:22
Предположим, что 22 - это номер строки данного теста. По рельсам помогают:
$ rails test --help
Вы можете запустить одиночный тест, добавив номер строки к имени файла:
bin/rails test test/models/user_test.rb:27
Также обратите внимание, что ваш тест должен наследовать от ActionDispatch :: IntegrationTest, чтобы это работало (это была моя ошибка):
class NexApiTest < ActionDispatch::IntegrationTest
.
.
.
В рельсах 5,
Я использовал этот способ для запуска одного тестового файла (все тесты в одном файле)
rails test -n /TopicsControllerTest/ -v
посмотрите здесь https://stackoverflow.com/a/41183694/3626659
Чтобы запустить один тест в реальном наборе Rails:
bundle exec ruby -I"railties/test" actionpack/test/template/form_options_helper_test.rb
Лучше всего заглянуть прямо в руководства: http://guides.rubyonrails.org/contributing_to_ruby_on_rails.html#running-tests
cd actionmailer
bundle exec ruby -w -Itest test/mail_layout_test.rb -n test_explicit_class_layout
Это был мой глупый полуночный вопрос. Rails любезно распечатывает команду, которую он выполняет rake test
. Остальное - это упражнение вырезания и вставки.
~/projects/rails/actionpack (my2.3.4)$ ruby -I"lib:test" "/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake/rake_test_loader.rb" "test/controller/base_test.rb"
Если вы хотите запустить один тест, вы можете просто запустить его как обычный скрипт Ruby.
ruby actionmailer/test/mail_layout_test.rb
Вы также можете запустить целый пакет (например, ActiveRecord или ActionMailer), войдя cd
в каталог и запустив его rake test
внутри.
require File.join(File.dirname(__FILE__), '..', 'test_helper')
cd
-ing in работает. Для ясности (не уверен, что я это неправильно читаю, но вы сказали «сгенерированные тестовые файлы»), это для самой библиотеки Rails, а не для проекта Rails.
Сначала зайдите в папку библиотеки, которую вы хотите протестировать (это важно), а затем запустите:
~/Projects/rails/actionview (master)$ ruby -I test test/template/number_helper_test.rb
Папка Rails
bundle install
bundle exec ruby -I"activerecord/test" activerecord/test/cases/relation/where_test.rb
Обратите внимание, что вам нужно загрузить соответствующую папку: «activerecord / test» (где у вас есть тест)