2011-06-29 11 views
26

En lugar de ejecutar todos los casos de prueba de forma automática, ¿hay alguna forma de ejecutar una sola prueba bajo prueba de Ruby/marco de la unidad. Sé que puedo lograr eso usando Rake pero no estoy listo para cambiar a Rake en este momento.¿Cómo ejecuto una prueba única usando la prueba/unidad de Ruby?

ruby unit_test.rb #this will run all the test case 
ruby unit_test.rb test1 #this will only run test1 

Respuesta

39

puedes pasar la opción -n en la línea de comandos para ejecutar una sola prueba:

ruby my_test.rb -n test_my_method 

donde 'test_my_method' es el nombre del método de prueba que desea ejecutar.

+1

+1 Exactamente lo que quiero. Pero solo lo acepto después de 6 minutos .. – pierrotlefou

+3

La opción completa es '--name' si prefiere opciones largas. –

+3

También es compatible con regex: ruby ​​my_test.rb -n /test_.*/ – imwilsonxu

8

Si busca una solución sin shell, podría definir una TestSuite.

Ejemplo:

gem 'test-unit' 
require 'test/unit' 
require 'test/unit/ui/console/testrunner' 

#~ require './demo' #Load the TestCases 
# >>>>>>>>>>This is your test file demo.rb 
class MyTest < Test::Unit::TestCase 
    def test_1() 
    assert_equal(2, 1+1) 
    assert_equal(2, 4/2) 

    assert_equal(1, 3/2) 
    assert_equal(1.5, 3/2.0) 
    end 
end 
# >>>>>>>>>>End of your test file 


#create a new empty TestSuite, giving it a name 
my_tests = Test::Unit::TestSuite.new("My Special Tests") 
my_tests << MyTest.new('test_1')#calls MyTest#test_1 

#run the suite 
Test::Unit::UI::Console::TestRunner.run(my_tests) 

En la vida real, el MyTest clase de prueba será cargada desde el archivo de prueba original.

Cuestiones relacionadas