Réponses:
REMARQUE: cela n'exécute pas le test via rake
. Ainsi, tout code que vous avez Rakefile
ne sera PAS exécuté.
Pour exécuter un seul test, utilisez la commande suivante à partir du répertoire principal de votre projet rails:
ruby -I test test/unit/my_model_test.rb -n test_name
Cela exécute un seul test nommé "nom", défini dans la classe MyModelTest dans le fichier spécifié. Le test_name est formé en prenant le nom du test, en le précédant du mot «test», puis en séparant les mots par des traits de soulignement. Par exemple:
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
Vous pouvez exécuter les deux tests via:
ruby -I test test/unit/my_model_test.rb
et juste le deuxième 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
. Rails 3.0.7.
-n "/good/"
. L'échappement Shell est toujours amusant, donc j'ai tendance à m'en tenir à de simples expressions rationnelles, mais c'est beaucoup plus facile que d'écrire le nom complet du test tout le temps.
test/
dossier. Par exemple, si je veux exécuter le test, activesupport/test/core_ext/array_ext_test.rb
je devrais être le activesupport/
premier.
-n "/good/"
travaillé.
Exécutez un fichier de test :
rake test TEST=tests/functional/accounts_test.rb
Exécutez un seul test dans un fichier de test:
rake test TEST=tests/functional/accounts_test.rb TESTOPTS="-n /paid accounts/"
(D'après le commentaire de @Puhlze.)
rake test TEST=tests/functional/accounts_test.rb TESTOPTS="-n '/paid accounts/'"
( /paid accounts/
avec des guillemets simples)
Pour les rails 5:
rails test test/models/my_model.rb
bin/rails test test/models/user_test.rb:27
Grâce à @James, la réponse semble être:
rails test test/models/my_model.rb:22
En supposant que 22 est le numéro de ligne du test donné. Selon l'aide des rails:
$ rails test --help
Vous pouvez exécuter un seul test en ajoutant un numéro de ligne à un nom de fichier:
bin/rails test test/models/user_test.rb:27
Veuillez également noter que votre test doit hériter de ActionDispatch :: IntegrationTest pour que cela fonctionne (c'était mon erreur):
class NexApiTest < ActionDispatch::IntegrationTest
.
.
.
Dans les rails 5,
J'ai utilisé cette façon d'exécuter un seul fichier de test (tous les tests dans un seul fichier)
rails test -n /TopicsControllerTest/ -v
regardez ici https://stackoverflow.com/a/41183694/3626659
Pour exécuter un seul test dans la suite Rails réelle:
bundle exec ruby -I"railties/test" actionpack/test/template/form_options_helper_test.rb
Le meilleur moyen est de consulter directement les guides: 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
C'était une de mes questions idiotes à minuit. Rails imprime gentiment la commande sur laquelle il s'exécute rake test
. Le reste est un exercice de copier-coller.
~/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"
Si vous souhaitez exécuter un seul test, vous pouvez simplement les exécuter en tant que script Ruby standard
ruby actionmailer/test/mail_layout_test.rb
Vous pouvez également exécuter une suite complète (par exemple ActiveRecord ou ActionMailer) en cd
-ing dans le répertoire et en exécutant rake test
à l' intérieur.
require File.join(File.dirname(__FILE__), '..', 'test_helper')
cd
-ing le fait. Juste pour être clair (je ne sais pas si j'ai mal lu ceci, mais vous avez dit "fichiers de test générés"), c'est pour la bibliothèque Rails elle-même, pas pour un projet Rails.
Tout d'abord, accédez au dossier de la bibliothèque que vous souhaitez tester (c'est important) puis exécutez:
~/Projects/rails/actionview (master)$ ruby -I test test/template/number_helper_test.rb
Dossier Rails
bundle install
bundle exec ruby -I"activerecord/test" activerecord/test/cases/relation/where_test.rb
Notez que vous devez charger le dossier approprié: "activerecord / test" (où vous avez test)