unitarias spec rails pruebas describe ruby minitest

spec - pruebas unitarias ruby



¿Cómo ejecutar todas las pruebas con minitest? (9)

Aquí está mi rakefile completo, que puse en mi directorio superior:

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

Para ejecutar todos mis archivos de prueba a la vez, simplemente escribo rake . ¡Eso es!

Asegúrese de require ''minitest/autorun'' en la parte superior de cada uno de sus archivos de Minitest. Dir.glob definitivamente funciona con Minitest.

Para obtener una salida de Minitest bonita y coloreada, con los nombres de todos mis métodos de prueba, tengo el archivo minitest_helper.rb en mi directorio / prueba. (Tuvo que instalar la gema minitest-reporteros):

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

Solo tenía que require_relative ''./minitest_helper'' en la parte superior de cada uno de mis archivos de prueba.

Descargué el código fuente de un proyecto, encontré un error y lo arreglé.

Ahora quiero hacer pruebas para saber si me he roto algo.

Las pruebas están en minitest DSL.

¿Cómo los corro todos a la vez?

Busqué tareas de rake aplicables, etc., pero no encontré ninguna.


Aquí hay un enlace a Rake::TestTask .

Hay un ejemplo en la página para comenzar.
Publicaré otro que estoy usando ahora mismo para una gema:

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

Como puede ver, asumo que todos mis archivos están en /lib y que mis especificaciones están en /spec y se denominan whatever_spec.rb

Espero eso ayude.


Esto es lo que Rake::TestTask hace bajo el capó, más o menos:

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

Nota: lib & test/test*.rb (arriba) son los valores predeterminados pero test & test/*_test.rb , respectivamente, son más típicos.

Fuente: rake / testtask.rb en c34d9e0 línea 169

Si está utilizando JRuby y desea evitar pagar el costo de inicio dos veces (una vez para Rake y luego una vez para el subproceso que comienza Rake), solo use ese comando.


Esto también se puede hacer a través de un Makefile.

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

ejecutando make ejecutará todas tus pruebas.


La respuesta de los bloqueos es mejor, pero también quería señalar que también puedes ejecutar minitest directamente desde el comando como con el comando ruby. Para ejecutar las pruebas en el archivo spec / calculator_spec.rb, ejecute:

$ ruby spec/calculator_spec.rb

Recuerde incluir el siguiente código en el archivo calculator_spec.rb:

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

Para ejecutar todas las pruebas en el directorio spec /, use el siguiente comando (consulte esta publicación para obtener más detalles. Globbing no funciona con Minitest: solo se ejecuta un archivo )

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


Me doy cuenta de que esta es una pregunta muy antigua, pero la rake test funciona para mí en Rails 4.2, incluidos los archivos en prueba / así como también la prueba / integración /, prueba / unidad /, etc.


Otra forma de hacerlo utilizando solo la biblioteca estándar de Ruby es con Dir.glob . Desde dentro de un archivo ruby, esto se vería así:

require "minitest/autorun" Dir.glob("**/*Test.rb") { |f| require_relative(f) }

O desde la línea de comandos, puede usar este comando:

ruby -I . -e "require ''minitest/autorun''; Dir.glob(''**/*Test.rb'') { |f| require(f) }"

Dir.glob(''**/*Test.rb'') busca de forma recursiva en el directorio actual cualquier archivo que coincida con *Test.rb , por lo que simplemente tomamos todos esos archivos y require require_relative o require_relative . Desde la línea de comandos, require_relative falla, así que usamos require pero primero agregamos el directorio actual a $LOAD_PATH través de -I .


Si no tienes rastrillo, prueba esto:

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)


$ rake test salió de la caja de rieles 5.0.