Comment mettre en place MiniTest?
Je suis assez novice testeur, mais ont été en essayant de devenir meilleur TDD dans les Rails.
RSpec fonctionne très bien, mais mes tests sont assez lent. J'ai entendu dire que MiniTest est beaucoup plus rapide, et le MiniTest/Spec DSL semble assez similaire à la façon dont j'ai l'habitude de travailler avec RSpec, alors j'ai pensé que je lui donnerais un essai.
Cependant, je n'ai pas été en mesure de trouver quelque chose sur le web qui fournit une description de la façon de configurer et d'exécuter Minitest. J'ai appris à tester à partir de la RSpec livre, et je n'ai aucune idée de comment Test::Unit ou MiniTest sont censés travailler. J'ai le bijou dans mon gemfile, j'ai écrit quelques tests simples, mais je n'ai aucune idée de où les mettre ou comment les exécuter. Je me figure ce est une de ces choses c'est tellement évident que personne n'a pris la peine de l'écrire...
Quelqu'un peut-il m'expliquer comment mettre en place un certains Minitest/spec fichiers et de les faire fonctionner, donc je peux comparer la performance à l'égard de Rspec?
MODIFIER
Plus précisément ce sont les bases que j'ai le plus besoin de savoir:
- Avez-vous besoin d'une test_helper de fichier (spec_helper.rb) et si oui, comment voyez-vous le créer?
- Comment exécuter minitest? Il ne semble pas être un équivalent de
rspec spec
ourspec path/to/file_spec.rb
, ce qui me manque?
Merci!
- Un point de départ: metaskills.net/2011/03/26/using-minitest-spec-with-rails
- Kain, merci. J'ai vu ce post... malheureusement, il ne couvre pas la mesure la plus simple: vous avez besoin d'un test_helper de fichier (spec_helper.rb) et si oui, comment voyez-vous le créer? Et, comment exécuter minitest? Il ne semble pas être un équivalent de
rspec spec
ourspec path/to/file_spec.rb
. C'est ce QUE je suis vraiment coincé sur. - Pour ce que ça vaut -- cette question a obtenu un couple de points de vue et un favori, mais pas de upvotes. Maintenant, c'est perdu dans la jungle, si vous voulez voir cette réponse à votre question, veuillez upvote de sorte qu'il sera de retour devant les gens.
- Veuillez jeter un oeil à blog.rawonrails.com/2012/01/... Ce post est sur la façon d'utiliser fourche version de minitest-gem rails pour obtenir minitest fonctionne mieux avec des rails.
- regardez aussi ce DONC, après les stackoverflow.com/questions/10694355/...
Vous devez vous connecter pour publier un commentaire.
Cette question est similaire à Comment faire pour exécuter tous les tests avec minitest?
À l'aide de Ruby 1.9.3 et Râteau 0.9.2.2, compte tenu d'un annuaire de mise en page comme ceci:
Voici ce que
alpha_spec.rb
pourrait ressembler à:Et voici
Rakefile
Vous pouvez exécuter
rake test
ruby -Ilib spec/alpha_spec.rb
Je ne sais pas si à l'aide d'un
spec_helper.rb
avec minitest est courant ou pas. Il ne semble pas être une méthode pratique pour le chargement d'un. Ajoutez à cela le Rakefile:Puis
spec/spec_helper.rb
peut contenir divers redondant choses:Et
spec/alpha_spec.rb
remplace les parties redondantes avec:rake test
ruby -Ilib -Ispec spec/alpha_spec.rb
Quelle est la version de Ruby utilisez-vous?
Dans ma compréhension, 1.9 introduit
MiniTest
, qui remplaceTest::Unit
entièrement, avec un rétro-compatible API. Donc, si vous êtes sur de 1,9 et de votre application Rails référencesTest::Unit
, c'est en fait déjà à l'aide deMiniTest
.Prendre un coup d'oeil à votre Ruby source -
test/unit.rb
pour 1.9.2 a l'suivantes:Et
test/unit/assertions
comprendMiniTest::Assertions
.De l'obtention de vos tests de courir plus vite est une toute autre sombre de l'art. Jetez un oeil à spork et watchr. L'ancien garde de votre application initialisé, de recharger les fichiers modifiés, et les fourches avant chaque exécution de la suite de test. Le dernier des montres des fichiers dans votre pension pour les changements, et s'exécute automatiquement leurs associés des cas de test.
Ensemble, ils vous donnent une assez dire TDD de l'installation. Vous écrivez un cas de test pour votre nouveau modèle, et il s'exécute automatiquement et échoue. Alors à chaque fois que vous enregistrez le modèle associé, que les cas de test re-fonctionne, très rapidement. Vous obtenez près de rétroaction instantanée sur si vous êtes rouge/vert.
Ils sont tous les deux un peu difficile à mettre en place et de se comporter bien ensemble, afin de vérifier de retour avec un peu plus de questions, si vous êtes coincé.
Bonne chance!
Noter que watchr ou spork ne sont pas requises pour l'exécution de tests. Ils sont un moyen pratique pour faire autotesting. Mais la façon la plus simple, vous pouvez exécuter un ensemble de MiniTest tests avec ruby lui-même:
Découvrez ce prise en main vidéo pour minitest-rails. Il se promène à travers la mise en place d'Minitest pour une application Rails.
http://www.youtube.com/watch?v=xA2f2zBNvsc
La procédure pas à pas montre comment créer un fichier de helper ainsi que la façon d'exécuter les tests à l'aide d'une tâche rake. Si vous souhaitez exécuter un test spécifique, vous pouvez le faire avec les éléments suivants:
Des versions plus récentes de RSpec (depuis 2.8 publié en janvier 2012), ont une spectaculaire augmentation de la vitesse. Ici est une exploration des écarts de performances et une comparaison avec MiniTest.
Aussi, j'ai trouvé cette screencast par Ryan Bates une excellente introduction à MiniTest. Notez que c'est l'un des pro des vidéos et vous aurez besoin de vous abonner à la regarder.
Ici est toute ma
rakefile
, que j'ai mis dans mon répertoire:Pour exécuter tous mes Minitest fichiers à la fois, je viens de type
rake
. Ça y est!Assurez-vous d'avoir
require 'minitest/autorun'
en haut de chacun de vos Minitest fichiers. Dir.glob certainement NE fonctionne pas avec le Minitest.Pour obtenir à peu, de couleur Minitest de sortie, avec les noms de tous mes méthodes de test, j'ai le fichier
minitest_helper.rb
dans mon dossier /test. (Installer la gem minitest-reporters):J'ai juste eu à
require_relative './minitest_helper'
en haut de chacun de mes fichiers de test.Patrick a écrit une très bonne explication et exemple. Pour les futurs lecteurs juste être conscient que les attentes globales sont désormais amortis, et sera supprimée dans Minitest 6. Il nécessite une presque banale changement dans l'emballage de la chose, vous êtes un essai dans un appel à
expect
.