Comment puis-je exécuter un seul test à partir d'une suite de tests de rails?Comment exécuter un seul test à partir d'une suite de tests de rails?
rake test ANYTHING
semble ne pas aider.
Comment puis-je exécuter un seul test à partir d'une suite de tests de rails?Comment exécuter un seul test à partir d'une suite de tests de rails?
rake test ANYTHING
semble ne pas aider.
REMARQUE:Ceci ne lance pas le test via rake
. Donc, tout code que vous avez dans Rakefile
ne sera pas exécuté.
Pour exécuter un seul test, utilisez la commande suivante dans le répertoire principal de votre projet Rails:
ruby -I test test/unit/my_model_test.rb -n test_name
Cela va un test unique 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 remplaçant par le mot "test", puis en séparant les mots avec des underscores. 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 second test via
ruby -I test test/unit/my_model_test.rb -n test_invalid_with_bad_attributes
Est-ce que cela fonctionne avec des tests fonctionnels? Rails 3? –
Cela ne fonctionne pas pour moi (sur les tests fonctionnels ou unitaires). Je reçois '0 tests, 0 assertions, 0 échecs, 0 erreurs'. Rails 3.0.7. –
Je suis personnellement fan de la forme regex: '-n"/good/"'. L'échappement de Shell est toujours amusant, donc j'ai tendance à m'en tenir à des expressions rationnelles simples, mais c'est beaucoup plus facile que d'écrire le nom complet du test tout le temps. – Groxx
Si vous souhaitez exécuter un seul test, vous pouvez simplement les exécuter comme un script Ruby régulier
ruby actionmailer/test/mail_layout_test.rb
Vous pouvez également exécuter une suite complète (par exemple. ActiveRecord ou ActionMailer) par cd
-ment dans la répertoire et en cours d'exécution rake test
là-bas.
Not in Rails - du moins pas avec les fichiers de test par défaut générés. Ils ont "require 'test_helper'" sur la première ligne, mais le chemin de chargement n'aura pas été configuré à temps. Si vous changez chaque première ligne en un require explicite ("require File.join (File.dirname (__ FILE__), '..', 'test_helper')", alors votre solution fonctionne. –
ahem, c'est 'require File.join (File.dirname (__ FILE__), '..', 'test_helper')' –
@Gaius Double-cochée. Le premier ne fonctionne pas, mais le 'cd'-ing fait. Juste pour être clair (je ne suis pas sûr si j'ai mal lu ceci, mais vous avez dit "généré des fichiers de test"), c'est pour la bibliothèque Rails elle-même, * pas * un projet Rails. – Aupajo
C'était une question idiote de minuit de la mienne. Rails imprime 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"
Pour exécuter un seul test dans la suite réelle Rails:
bundle exec ruby -I"railties/test" actionpack/test/template/form_options_helper_test.rb
exécuter un fichier de test :
rake test TEST=tests/functional/accounts_test.rb
Exécuter un test unique dans un fichier de test:
rake test TEST=tests/functional/accounts_test.rb TESTOPTS="-n /paid accounts/"
(D'après le commentaire de @Puhlze.)
En outre, si vous souhaitez exécuter un test unique dans le fichier donné, vous pouvez ajouter un environnement TESTOPTS var qui sera transmis au test. PAR EXEMPLE. test de rake TEST = tests/functional/accounts_test.rb TESTOPTS = "- n/comptes payés /" – Puhlze
Si vous utilisez bundler, c'est un bon moyen de le faire. –
si la dernière commande de test ne fonctionne pas, essayez 'rake test TEST = tests/fonctionnel/accounts_test.rb TESTOPTS =" - n '/ comptes payés /' "' (encadrant '/ paid accounts /' avec des guillemets simples) – rrw
Pour rails 5:
rails test test/models/my_model.rb
exécute tous les cas de test dans le fichier, la question demande d'exécuter un seul test ... – user000001
d'abord, accéder au dossier de la lib que vous voulez tester (ce qui est important) et puis exécutez:
~/Projects/rails/actionview (master)$ ruby -I test test/template/number_helper_test.rb
La meilleure façon est de regarder directement dans 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
Dans les rails 5,
J'ai utilisé ce moyen pour exécuter le fichier de test unique (tous les tests dans un seul fichier)
rails test -n /TopicsControllerTest/ -v
Regardez ici https://stackoverflow.com/a/41183694/3626659
c'est la meilleure réponse à la question pour les versions récentes rails, +1 – user000001
Merci à @ 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 les rails aider:
$ rails test --help
Vous pouvez exécuter un test simple en ajoutant un numéro de ligne à un nom de fichier:
bin/rails test test/models/user_test.rb:27
, s'il vous plaît noter également que votre test doit hériter de ActionDispatch: : IntegrationTest pour que cela fonctionne (C'était mon erreur):
class NexApiTest < ActionDispatch::IntegrationTest
.
.
.
Cela semble être la meilleure réponse basée sur les guides Rails, à moins pour tester une ligne spécifique. – tfantina
duplication possible de [unité à rails simples/test fonctionnel] (http://stackoverflow.com/questions/274349/running-single-rails-unit-functional-test) –