Відповіді:
ПРИМІТКА. Цей тест не запускається через rake
. Тож будь-який код, який у вас є Rakefile
, НЕ буде виконаний.
Щоб запустити єдиний тест, використовуйте таку команду з головного каталогу вашого рейкового проекту:
ruby -I test test/unit/my_model_test.rb -n test_name
Це запускає єдиний тест з назвою "ім'я", визначений у класі MyModelTest у зазначеному файлі. Ім'я тесту формується, беручи ім'я тесту, попередньо додавши його до слова "тест", після чого відокремлюючи слова підкресленнями. Наприклад:
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
Це було моє дурне опівночі. Рейки люб'язно друкує команду, яку вона виконує 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"
Найкращий спосіб - заглянути безпосередньо в путівники: 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
Якщо ви хочете запустити один тест, ви можете просто запустити їх як звичайний сценарій Ruby
ruby actionmailer/test/mail_layout_test.rb
Ви також можете запустити цілий пакет (наприклад, ActiveRecord або ActionMailer), cd
ввівши в каталог і запустивши rake test
всередину.
require File.join(File.dirname(__FILE__), '..', 'test_helper')
cd
входить в дію. Щоб було зрозуміло (я не впевнений, чи я неправильно читаю це, але ви сказали "створені тестові файли"), це для самої бібліотеки Rails, а не для проекту Rails.
Спочатку перейдіть до папки lib, яку ви хочете протестувати (це важливо), а потім запустіть:
~/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" (там, де у вас є тест)