Jak mogę uruchomić pojedynczy test z zestawu testów rails?
rake test ANYTHING
wydaje się nie pomagać.
Odpowiedzi:
UWAGA: To nie uruchamia testu za pośrednictwem rake
. Więc żaden kod, który masz w nim Rakefile
NIE zostanie wykonany.
Aby uruchomić pojedynczy test, użyj następującego polecenia z głównego katalogu projektu rails:
ruby -I test test/unit/my_model_test.rb -n test_name
Spowoduje to uruchomienie pojedynczego testu o nazwie „name”, zdefiniowanego w klasie MyModelTest w określonym pliku. Nazwa testu jest tworzona przez pobranie nazwy testu, poprzedzenie go słowem „test”, a następnie oddzielenie słów podkreśleniami. Na przykład:
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
Możesz uruchomić oba testy poprzez:
ruby -I test test/unit/my_model_test.rb
i dopiero drugi test przez
ruby -I test test/unit/my_model_test.rb -n test_invalid_with_bad_attributes
0 tests, 0 assertions, 0 failures, 0 errors
. Rails 3.0.7.
-n "/good/"
. Ucieczka z powłoki jest zawsze zabawna, więc trzymam się prostych wyrażeń regularnych, ale jest o wiele łatwiejsza niż ciągłe wypisywanie pełnej nazwy testu.
test/
folder. Na przykład, jeśli chcę uruchomić test activesupport/test/core_ext/array_ext_test.rb
, powinienem być activesupport/
pierwszy.
-n "/good/"
pracował.
Uruchom plik testowy :
rake test TEST=tests/functional/accounts_test.rb
Uruchom pojedynczy test w pliku testowym:
rake test TEST=tests/functional/accounts_test.rb TESTOPTS="-n /paid accounts/"
(Z komentarza @Puhlze.)
rake test TEST=tests/functional/accounts_test.rb TESTOPTS="-n '/paid accounts/'"
( /paid accounts/
w pojedynczych cudzysłowach)
Dla szyn 5:
rails test test/models/my_model.rb
bin/rails test test/models/user_test.rb:27
Dzięki @James wydaje się, że odpowiedź brzmi:
rails test test/models/my_model.rb:22
Zakładając, że 22 to numer linii danego testu. Według szyn pomagają:
$ rails test --help
Możesz uruchomić pojedynczy test, dołączając numer wiersza do nazwy pliku:
bin/rails test test/models/user_test.rb:27
Pamiętaj również, że Twój test powinien dziedziczyć po ActionDispatch :: IntegrationTest, aby to zadziałało (to był mój błąd):
class NexApiTest < ActionDispatch::IntegrationTest
.
.
.
W szynach 5,
W ten sposób uruchomiłem pojedynczy plik testowy (wszystkie testy w jednym pliku)
rails test -n /TopicsControllerTest/ -v
spójrz tutaj https://stackoverflow.com/a/41183694/3626659
Aby uruchomić pojedynczy test w aktualnym zestawie Railsów:
bundle exec ruby -I"railties/test" actionpack/test/template/form_options_helper_test.rb
Najlepiej zajrzeć bezpośrednio do przewodników: 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
To było moje głupie pytanie o północy. Railsy uprzejmie wypisują polecenie, na którym są wykonywane rake test
. Reszta to ćwiczenie „wytnij i wklej”.
~/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"
Jeśli chcesz uruchomić pojedynczy test, możesz po prostu uruchomić go jako zwykły skrypt Ruby
ruby actionmailer/test/mail_layout_test.rb
Możesz także uruchomić cały pakiet (np. ActiveRecord lub ActionMailer) cd
wchodząc do katalogu i uruchamiając się rake test
w nim.
require File.join(File.dirname(__FILE__), '..', 'test_helper')
cd
-ing działa. Dla jasności (nie jestem pewien, czy źle to czytam, ale powiedziałeś "wygenerowane pliki testowe"), to jest dla samej biblioteki Rails, a nie projektu Rails.
Najpierw uzyskaj dostęp do folderu biblioteki, którą chcesz przetestować (jest to ważne), a następnie uruchom:
~/Projects/rails/actionview (master)$ ruby -I test test/template/number_helper_test.rb
Folder Rails
bundle install
bundle exec ruby -I"activerecord/test" activerecord/test/cases/relation/where_test.rb
Uwaga, musisz załadować odpowiedni folder: „activerecord / test” (gdzie masz test)