Je peux exécuter tous les tests dans un seul fichier avec:
rake test TEST=path/to/test_file.rb
Cependant, si je veux exécuter un seul test dans ce fichier, comment le ferais-je?
Je recherche des fonctionnalités similaires à:
rspec path/to/test_file.rb -l 25
Je recherche des fonctionnalités similaires à rspec path/to/file.rb -l 25
Ouaip! Utilisez La gemme "m" de Nick Quaranto . Avec cela, vous pouvez dire:
m spec/my_spec.rb:25
La commande devrait être:
% rake test TEST=test/test_foobar.rb TESTOPTS="--name=test_foobar1 -v"
As-tu essayé:
Ruby path/to/test_file.rb --name test_method_name
C’est l’un des problèmes qui me préoccupent à propos du string name definition
dans les tests.
Lorsque vous avez:
def test_my_test
end
vous savez toujours comment votre test est nommé afin que vous puissiez l'exécuter comme ceci:
Ruby my_test -n test_my_test
Mais quand vous avez quelque chose comme:
it "my test" do
end
vous ne savez jamais exactement comment ce test est réellement nommé en interne, vous ne pouvez donc pas utiliser l'option -n
directement.
Pour savoir comment ce test est nommé en interne, vous n'avez qu'une option: exécutez tout le fichier pour essayer de regarder dans les journaux.
Ma solution de contournement est d'ajouter (temporairement) quelque chose au nom de test très unique comme:
it "my test xxx" do
end
puis utilisez la version RegEx du paramètre '-n' comme ceci:
Ruby my_test.rb -n /xxx/
Aucune gemme requise: Ruby -Itest test/lib/test.rb --name /some_test/
Source: http://blog.arvidandersson.se/2012/03/28/minimalicous-tests-in-Ruby-1-9
Si vous utilisez MiniTest avec Rails 5, la meilleure façon d'exécuter tous les tests dans un seul fichier est la suivante:
bin/Rails test path/to/test_file.rb
Et pour un seul test (par exemple à la ligne 25):
bin/Rails test path/to/test_file.rb:25
Voir http://guides.rubyonrails.org/testing.html#the-Rails-test-runner
Vous pouvez l'utiliser pour exécuter un seul fichier:
rake test TEST=test/path/to/file.rb
J'ai aussi utilisé
Ruby -I"lib:test" test/path/to/file.rb
pour un meilleur affichage.
Il y a 2 façons de le faire:
Rake::TestTask
cible pour utiliser un autre chargeur de tests.Rake::TestTask
(à partir de rake 0.8.7) est théoriquement capable de passer des options supplémentaires à MiniTest::Unit
avec une option de ligne de commande "TESTOPTS=blah-blah"
, par exemple:
% rake test TEST = test/test_foobar.rb TESTOPTS = "- nom test_foobar1 -v"
En pratique, l'option --name
(un filtre pour les noms de test) ne fonctionnera pas, en raison des internes de rake. Pour résoudre ce problème, vous devrez écrire un petit patch de singe dans votre fichier Rakefile:
# overriding the default rake tests loader
class Rake::TestTask
def rake_loader
'test/my-minitest-loader.rb'
end
end
# our usual test terget
Rake::TestTask.new {|i|
i.test_files = FileList['test/test_*.rb']
i.verbose = true
}
Ce patch nécessite que vous créiez un fichier test/my-minitest-loader.rb
:
ARGV.each { |f|
break if f =~ /^-/
load f
}
Pour imprimer toutes les options possibles pour Minitest, tapez
% Ruby -r minitest/autorun -e '' - --help
En fait, vous pouvez simplement lancer le nom ou même le numéro:
-n, --name PATTERN Filter run on /pattern/ or string.
par exemple:
Ruby spec/stories/foo_spec.rb --name 3
FAIL (0:00:00.022) test_0003_has foo
Expected: "foo"
Actual: nil
Si vous utilisez Turn gem avec minitest, assurez-vous d'utiliser l'option Turn.config.pattern
car Turn Run run ne respecte pas l'option --name dans les fichiers ARG.
Après travaillera
def test_abc
end
test "hello world"
end
Cela peut fonctionner par
bundle exec Ruby -I test path/to/test -n test_abc
bundle exec Ruby -I test path/to/test -n test_hello_Word
J'utilise Ruby /path/to/test -n /distinguishable Word/
Edit: -n
est un raccourci pour --name
. distinguishable Word
peut être n'importe quelle chaîne insérée dans la description du test. J'utilise généralement un mot aléatoire qui, à ma connaissance, ne figurera pas dans la description des autres tests.
Je recherche des fonctionnalités similaires à:
chemin rspec/to/fichier_test.rb -l 25
Il y a une gemme qui fait exactement cela: minitest-line
.
gem install minitest-line
Ruby test/my_file -l 5