Question

J'ai téléchargé le code source pour un projet, a trouvé un bug, et il fixe.

Maintenant, je veux exécuter des tests pour savoir si je rien cassé.

Les tests sont en DSL minitest.

Comment puis-je les lance à la fois?

Je cherchai pour les tâches de râteau applicables etc, mais je ne trouve pas.

Était-ce utile?

La solution

Voici un lien vers Rake :: TestTask .

Il y a un exemple dans la page pour vous aider à démarrer.
Je posterai un autre que j'utilise en ce moment pour un petit bijou:

require 'rake/testtask'

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

Comme vous pouvez le voir, je suppose que mes fichiers sont tous dans /lib et que mes spécifications sont /spec et sont nommés whatever_spec.rb

it helps.

Autres conseils

La réponse de serrures est mieux, mais je voulais aussi souligner que vous pouvez également exécuter minitest directement à partir de la commande comme avec la commande rubis. Pour exécuter les tests dans le fichier spec / calculator_spec.rb run:

$ ruby spec/calculator_spec.rb 

Rappelez-vous d'inclure le code suivant dans le fichier calculator_spec.rb:

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

Pour exécuter tous les tests dans la spécification / répertoire, utilisez la commande suivante (voir ce billet pour plus de détails englobement ne fonctionne pas avec Minitest - un seul fichier est exécuté )

$ for file in spec/*.rb; do ruby $file; done 

est ce que Rake::TestTask ne fait sous le capot , plus ou moins:

ruby -Ilib -e 'ARGV.each { |f| require f }' ./test/test*.rb

Note:. lib & test/test*.rb (ci-dessus) sont les paramètres par défaut, mais test & test/*_test.rb, respectivement, sont plus typiques

Source: râteau / testtask.rb à la ligne c34d9e0 169

Si vous utilisez JRuby et que vous voulez éviter de payer le coût de démarrage deux fois (une fois pour Rake et une fois pour le sous-processus qui commence Rake), il suffit d'utiliser cette commande.

Voici mon ensemble rakefile, que je mets dans mon répertoire principal:

task :default => :test
task :test do
  Dir.glob('./test/*_test.rb').each { |file| require file}
end

Pour exécuter tous mes fichiers de test à la fois, je viens de taper rake. Ca y est!

Assurez-vous d'avoir require 'minitest/autorun' en haut de chacun de vos fichiers MINITEST. Dir.glob certainement travailler avec DOES Minitest.

Pour obtenir assez, sortie Minitest de couleur, avec les noms de toutes mes méthodes d'essai, j'ai le fichier minitest_helper.rb dans mon répertoire / test. (Nous avons dû installer les journalistes MiniTest-gem):

require 'minitest/reporters'
Minitest::Reporters.use!(Minitest::Reporters::SpecReporter.new)
require 'minitest/autorun'

Je devais require_relative './minitest_helper' en haut de chacun de mes fichiers de test.

Cela peut aussi se faire via un Makefile.

default:
  echo "Dir.glob('./test/*_test.rb').each { |file| require file}" | ruby

make en cours d'exécution exécutera tous vos tests.

Une autre façon de le faire en utilisant uniquement la bibliothèque standard de Ruby est avec

$ rake test a manqué des rails boîte 5.0.

Je sais que c'est une question très ancienne, mais fonctionne rake test pour moi dans Rails 4.2, y compris les fichiers en cours de test / ainsi que le test / intégration /, test / unit /, etc.

Si vous n'avez pas râteau, essayez ceci:

http: // blog.gingergriffis.com/post/85871430778/ruby-how-to-run-all-tests-in-a-directory

# run_all_tests.rb

require 'find'
require 'optparse'

options = {
  :exclude => [],
}

OptionParser.new do |opts|
  opts.on('--exclude Comma Separated String',
          'Test scripts to exclude') do |css|
    options[:exclude] = css.split(',')
  end
end.parse!

commands = []

Find.find(File.dirname(__FILE__)) do |path|
  Find.prune if path =~ /#{__FILE__}$/
    if !File.directory?(path) && (path =~ /(.*)\.rb$/)
      if options[:exclude].none? {|e| path.include?(e)}
        commands << "ruby #{path}"
      end
    end
end
command_string = commands.join(" && ")
exec(command_string)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top