2012-05-15 15 views
6

Mirado this question ya, y que más o menos la forma en espejos Yo ahora toda mi suite.¿Cómo ejecutar un paquete completo de MiniTest sin Rake?

Además, he configurar la siguiente tarea rake:

Rake::TestTask.new do |t| 
    t.name = "spec:models" 
    t.libs << "test" 
    t.pattern = "spec/models/*_spec.rb" 
end 

pero noto cuando corro esto utilizando time rake spec:models, que se completa en aproximadamente 2,36 segundos. Si ejecuto todas las pruebas individuales en ese directorio usando ruby /path/to/spec.rb (todos están aislados de ActiveRecord actualmente - sin persistencia aún, tan súper rápido), su tiempo total acumulado del usuario es 2.36 segundos, pero también estoy notando que cada archivo toma 0.4 segundos de usuario para ejecutar de principio a fin, el tiempo real de "prueba" informado por MiniTest es mucho, mucho más rápido (de modo que todo mi conjunto, después de las dependencias de carga, debería ejecutarse en menos de 0,15 segundos ish, no en 2,36 segundos).

Ejemplo (para un archivo de especificaciones):

Started 

11/11:   100% |======================================| Time: 00:00:00 

Finished in 0.02223s 
11 tests, 15 assertions, 0 failures, 0 errors, 0 skips 
ruby path/to/spec.rb 0.43s user 0.06s system 88% cpu 0.559 total 

Sospecho que Rake está recargando bibliotecas entre la ejecución de cada prueba, y eso es lo que representa el tiempo extra. ¿Hay alguna forma de que pueda verificar esto o ejecutar todo mi paquete sin usar Rake?

Por cierto, cuando digo "tiempo al usuario" antes, me refiero a la primera serie emitida anteponiendo time a mi mando rubí para ejecutar un archivo de prueba única, por lo time ruby /path/to/spec.rb = ruby path/to/spec.rb 0.43s user 0.06s system 88% cpu 0.559 total

+0

¿Alguna vez encontró una solución para esto? –

Respuesta

1

Esto ejecutará cualquier pruebas en el directorio de especificaciones y subdirectorios con un _spec.rb al final del nombre de archivo:

ruby -Itest spec/**/*_spec.rb 
+1

Hmm, eso solo parece ejecutar un archivo (mi resultado final con 'ruby -Itest spec/models/* _ spec.rb' muestra 5 pruebas completadas, mientras que ejecutar' rake spec: models' arriba muestra 77 pruebas completadas). ¿Que pasa con eso? – neezer

+0

Me gustaría saber por qué la sugerencia de Matthew tampoco funciona para mí. –

+1

Creo que probablemente necesites citas en spec/**/_ spec.rb o tu shell lo ampliará, sospecho que solo el archivo, a menos que estés usando un shell que entienda esa notación. – Ghoti

5

Crear un archivo spec.rb en el directorio superior de su proyecto:

$:<<'spec' # add to load path 
files = Dir.glob('spec/**/*.rb') 
files.each{|file| require file.gsub(/^spec\/|.rb$/,'')} 

Run que:

ruby spec.rb 

Si esto funciona para usted, usted puede cambiar el nombre del archivo spec.rb como desee, o moverlo a un lugar mejor, o alterar las rutas de carga a su gusto, etc.

Cuestiones relacionadas