2012-01-26 24 views
31

Estaba investigando el uso de la herramienta de compilación Rake para automatizar las pruebas de la unidad de ejecución. Busqué en la web, pero todos los ejemplos fueron para usar rieles. Normalmente solo escribo pequeños programas de línea de comandos o aplicaciones sencillas de Sinatra.Ejecutar las pruebas de la unidad de Ruby con Rake

Así que se le ocurrió la siguiente (probablemente mal) solución que simplemente emula lo que haría en la línea de comandos: (I acaba de ejecutar una prueba de unidad como un ejemplo.)

desc 'Run unit tests' 
task :test do 
    sh 'ruby -I lib test/test_entry.rb' 
end 
task :default => :test 

funciona , pero no puedo evitar pensar que debe haber una mejor manera, solo escribir require 'test/test_entry.rb' no funciona. Tengo problemas con require, Ruby no puede encontrar el directorio lib, donde están todos los archivos.

Respuesta

60

Utilice Rake :: TestTask http://rake.rubyforge.org/classes/Rake/TestTask.html. Coloque esto en su archivo Rake y luego ejecute rake test:

require 'rake/testtask' 

Rake::TestTask.new do |t| 
    t.libs << "test" 
    t.test_files = FileList['test/test*.rb'] 
    t.verbose = true 
end 
+0

Muchas gracias. ¡Esto funcionó muy bien! – kmikael

+0

Si le gusta organizar sus pruebas en subdirectorios, intente con ''test/**/test * .rb'' para acomodar eso. – tadman

2

El problema es que su directorio lib no está incluido en la ruta de carga de ruby. Se puede arreglar así:

$:.unshift 'lib' 
require 'test_entry' 

o más confiable alternativa que añade camino de lib directorio expandido a la trayectoria de carga:

$:.unshift File.expand_path(File.join(File.dirname(__FILE__), 'lib')) 
require 'test_entry' 

Por cierto, variable global $: tiene alias más prolija $LOAD_PATH.

+0

Gracias por este consejo también. – kmikael

Cuestiones relacionadas