48 votes

Comment configurer 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:

  1. Avez-vous besoin d'une test_helper de fichier (spec_helper.rb) et si oui, comment voyez-vous le créer?
  2. Comment voulez-vous exécuter minitest? Il ne semble pas être un équivalent de rspec spec ou rspec path/to/file_spec.rb, ce qui me manque?

Merci!

40voto

Patrick Points 1451

Cette question est similaire à la façon d'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:

Rakefile
lib/alpha.rb
spec/alpha_spec.rb

Voici ce qu' alpha_spec.rb pourrait ressembler à:

require 'minitest/spec'
require 'minitest/autorun'  # arranges for minitest to run (in an exit handler, so it runs last)

require 'alpha'

describe 'Alpha' do
  it 'greets you by name' do
    Alpha.new.greet('Alice').must_equal('hello, Alice')
  end
end

Et voici Rakefile

require 'rake'
require 'rake/testtask'

Rake::TestTask.new do |t|
  t.pattern = 'spec/**/*_spec.rb'
end

Vous pouvez l'exécuter

  • tous les tests: rake test
  • un 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. Ajoutez à cela le Rakefile:

require 'rake'
require 'rake/testtask'

Rake::TestTask.new do |t|
  t.pattern = 'spec/**/*_spec.rb'
  t.libs.push 'spec'
end

Ensuite, spec/spec_helper.rb peut contenir divers redondant choses:

require 'minitest/spec'
require 'minitest/autorun'
require 'alpha'

Et spec/alpha_spec.rb remplace les parties redondantes avec:

require 'spec_helper'
  • tous les tests: rake test
  • un test: ruby -Ilib -Ispec spec/alpha_spec.rb

5voto

cczona Points 249

Notez que watchr ou spork ne sont pas obligatoires pour l'exécution de tests. Ils sont pratiques pour l'autotest. Mais la manière la plus simple d’exécuter un ensemble de tests MiniTest consiste à utiliser ruby lui-même:

 $ ruby myfileoftests.rb
 

4voto

nfm Points 5269

Quelle est la version de Ruby utilisez-vous?

Dans ma compréhension, 1.9 introduite MiniTest, qui remplace Test::Unit entièrement, avec un rétro-compatible API. Donc, si vous êtes sur de 1,9 et de votre application Rails références Test::Unit, c'est en fait déjà à l'aide de MiniTest.

Jetez un oeil à votre Ruby source - test/unit.rb pour 1.9.2 a l'suivantes:

require 'minitest/unit'
require 'test/unit/assertions'
require 'test/unit/testcase'

Et test/unit/assertions inclut MiniTest::Assertions.


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!

3voto

blowmage Points 2587

Découvrez cette vidéo de démarrage 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:

ruby -Itest test/models/user_test.rb

1voto

SnapShot Points 2409

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 vidéo de 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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X