Risposte:
NOTA: questo non esegue il test tramite rake
. Pertanto, qualsiasi codice Rakefile
inserito NON verrà eseguito.
Per eseguire un singolo test, utilizzare il seguente comando dalla directory principale del progetto rails:
ruby -I test test/unit/my_model_test.rb -n test_name
Ciò esegue un singolo test denominato "nome", definito nella classe MyModelTest nel file specificato. Test_name viene formato prendendo il nome del test, anteponendolo alla parola "test", quindi separando le parole con caratteri di sottolineatura. Per esempio:
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
È possibile eseguire entrambi i test tramite:
ruby -I test test/unit/my_model_test.rb
e solo il secondo test via
ruby -I test test/unit/my_model_test.rb -n test_invalid_with_bad_attributes
0 tests, 0 assertions, 0 failures, 0 errors
. Rotaie 3.0.7.
-n "/good/"
. L'escape della shell è sempre divertente, quindi tendo a attenermi a regex semplici, ma è molto più facile che scrivere sempre il nome completo del test.
test/
cartella. Ad esempio, se voglio eseguire il test, activesupport/test/core_ext/array_ext_test.rb
dovrei essere il activesupport/
primo.
-n "/good/"
lavorato.
Esegui un file di prova :
rake test TEST=tests/functional/accounts_test.rb
Esegui un singolo test in un file di test:
rake test TEST=tests/functional/accounts_test.rb TESTOPTS="-n /paid accounts/"
(Dal commento di @Puhlze.)
rake test TEST=tests/functional/accounts_test.rb TESTOPTS="-n '/paid accounts/'"
(racchiudendolo /paid accounts/
tra virgolette singole)
Per binari 5:
rails test test/models/my_model.rb
bin/rails test test/models/user_test.rb:27
Grazie a @James, la risposta sembra essere:
rails test test/models/my_model.rb:22
Supponendo che 22 sia il numero di riga del test dato. Secondo la guida di rotaie:
$ rails test --help
È possibile eseguire un singolo test aggiungendo un numero di riga a un nome file:
bin/rails test test/models/user_test.rb:27
Inoltre, tieni presente che il test dovrebbe ereditare da ActionDispatch :: IntegrationTest affinché funzioni (è stato un mio errore):
class NexApiTest < ActionDispatch::IntegrationTest
.
.
.
Nelle rotaie 5,
Ho usato questo modo per eseguire un singolo file di test (tutti i test in un file)
rails test -n /TopicsControllerTest/ -v
guarda qui https://stackoverflow.com/a/41183694/3626659
Per eseguire un singolo test nella suite Rails effettiva:
bundle exec ruby -I"railties/test" actionpack/test/template/form_options_helper_test.rb
Il modo migliore è guardare direttamente nelle guide: 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
Era una mia stupida domanda di mezzanotte. Rails stampa gentilmente il comando su cui sta eseguendo rake test
. Il resto è un esercizio di taglia e incolla.
~/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"
Se vuoi eseguire un singolo test, puoi semplicemente eseguirli come un normale script Ruby
ruby actionmailer/test/mail_layout_test.rb
Puoi anche eseguire un'intera suite (ad es. ActiveRecord o ActionMailer) accedendo cd
alla directory ed eseguendo rake test
al suo interno.
require File.join(File.dirname(__FILE__), '..', 'test_helper')
cd
funziona. Giusto per essere chiari (non sono sicuro se sto leggendo male questo, ma hai detto "file di test generati"), questo è per la libreria Rails stessa, non un progetto Rails.
Innanzitutto, accedi alla cartella della libreria che desideri testare (questo è importante) e quindi esegui:
~/Projects/rails/actionview (master)$ ruby -I test test/template/number_helper_test.rb
Cartella delle rotaie
bundle install
bundle exec ruby -I"activerecord/test" activerecord/test/cases/relation/where_test.rb
Nota che devi caricare la cartella appropriata: "activerecord / test" (dove hai test)