Est-il possible de faire un seul test dans MiniTest?

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 une fonctionnalité similaire à:

 rspec path/to/test_file.rb -l 25 

Je recherche une fonctionnalité similaire à rspec path / to / file.rb -l 25

Ouaip! Utilisez le joyau “m” de Nick Quaranto . Avec ça, vous pouvez dire:

 m spec/my_spec.rb:25 

La commande doit ê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’une des choses qui me dérangent au sujet de la ssortingng name definition dans les tests.

Lorsque vous avez:

 def test_my_test end 

vous savez toujours comment votre test est nommé pour 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 comment ce test est vraiment 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écuter l’ensemble du fichier pour essayer de trouver dans les journaux.

Ma solution de contournement est (temporellement) d’append quelque chose au nom du test très unique comme:

 it "my test xxx" do end 

puis utilisez la version RegEx du paramètre ‘-n’ comme:

 ruby my_test.rb -n /xxx/ 

Aucun bijou requirejs: ruby -Itest test/lib/test.rb --name /some_test/

Source: http://blog.arvidandersson.se/2012/03/28/minimalicous-testing-in-ruby-1-9

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.

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 sur la ligne 25):

 bin/rails test path/to/test_file.rb:25 

Voir http://guides.rubyonrails.org/testing.html#the-rails-test-runner

Il y a 2 façons de le faire:

  1. Exécutez les tests “manuellement” (voir la réponse d’Andrew Grimm).
  2. Hack Rake::TestTask cible pour utiliser un chargeur de tests différent.

Rake::TestTask (de rake 0.8.7) est théoriquement capable de transmettre 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 rake internes. Pour résoudre ce problème, vous devrez écrire un petit correctif 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 de créer 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 

Vous pouvez exécuter uniquement le nom ou même le numéro:

 -n, --name PATTERN Filter run on /pattern/ or ssortingng. 

par exemple:

 ruby spec/stories/foo_spec.rb --name 3 FAIL (0:00:00.022) test_0003_has foo Expected: "foo" Actual: nil 

Voir: https://github.com/seattlerb/minitest

Si vous utilisez Turn gem with minitest, veillez à utiliser l’option Turn.config.pattern , car le runner Turn Minitest ne respecte pas l’option –name dans les ARG.

Je recherche une fonctionnalité similaire à:

chemin rspec / to / test_file.rb -l 25

Il y a un petit bijou qui fait exactement ça: minitest-line .

 gem install minitest-line ruby test/my_file -l 5 

de https://github.com/judofyr/minitest-line#minitest-line