Pruebas de rendimiento de Rails "Prueba de rastrillo: Benchmark" y "Test Rake Test: Perfil" Dame errores

StackOverflow https://stackoverflow.com/questions/2542520

Pregunta

¡Estoy tratando de ejecutar una prueba de rendimiento predeterminada en blanco con Ruby 1.9 y Rails 2.3.5 y no puedo hacer que funcione! ¿¿¿Que me estoy perdiendo aqui???

rails testapp
cd testapp
script/generate scaffold User name:string
rake db:migrate
rake test:benchmark

-

/usr/local/bin/ruby19 -I"lib:test" "/usr/local/lib/ruby19/gems/1.9.1/gems/rake-0.8.7/lib/rake/rake_test_loader.rb" "test/performance/browsing_test.rb" -- --benchmark
Loaded suite /usr/local/lib/ruby19/gems/1.9.1/gems/rake-0.8.7/lib/rake/rake_test_loader
Started
/usr/local/lib/ruby19/gems/1.9.1/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:105:in `rescue in const_missing': uninitialized constant BrowsingTest::STARTED (NameError)
    from /usr/local/lib/ruby19/gems/1.9.1/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:94:in `const_missing'
    from /usr/local/lib/ruby19/gems/1.9.1/gems/activesupport-2.3.5/lib/active_support/testing/performance.rb:38:in `run'
    from /usr/local/lib/ruby19/1.9.1/minitest/unit.rb:415:in `block (2 levels) in run_test_suites'
    from /usr/local/lib/ruby19/1.9.1/minitest/unit.rb:409:in `each'
    from /usr/local/lib/ruby19/1.9.1/minitest/unit.rb:409:in `block in run_test_suites'
    from /usr/local/lib/ruby19/1.9.1/minitest/unit.rb:408:in `each'
    from /usr/local/lib/ruby19/1.9.1/minitest/unit.rb:408:in `run_test_suites'
    from /usr/local/lib/ruby19/1.9.1/minitest/unit.rb:388:in `run'
    from /usr/local/lib/ruby19/1.9.1/minitest/unit.rb:329:in `block in autorun'
rake aborted!
Command failed with status (1): [/usr/local/bin/ruby19 -I"lib:test" "/usr/l...]
¿Fue útil?

Solución

Ver este. Para un parche, ver aquí.

Otros consejos

Ok, el problema es que Ruby 1.8 usó la unidad de prueba :: como su biblioteca de prueba predeterminada. En Ruby 1.9 que se cambió a Minitest.

Versiones de ActiveSupport antes de 3.1.0 Tests asumió :: Unidad. Parece que se ha abordado en 3.1.0 y más tarde. Sin embargo, si está usando Rails 3.0.9, tiene una dependencia de ActiveSupport 3.0.9, por lo que no puede solicitar versiones posteriores en su archivo gem.

Fundar este a través de Google. Aparentemente, la biblioteca Test :: Unit todavía está disponible, pero como una gema llamada 'Unidad de prueba'.

Entonces, en mi archivo gem en la parte superior antes de la gema de Rails, puse:

gem 'test-unit', '~> 2.3.0'

Luego ejecuté la prueba de rastrillo: ¡Benchmark y funcionó!

Creo que es un error. Puedo ejecutar el código con Ruby 1.8.6 (2008-08-11 Patchlevel 287) [Universal-Darwin9.0]. Bajo Ruby 1.9.1, obtengo una excepción como la que describe.

Cuando llega a ActiveSupport :: Testing :: Performance#Run (en Rails) Causa una excepción en la línea yield(self.class::STARTED, name) donde intenta encontrar la constante :: inicio. Ruby Prof tiene un método similar también, bajo RubyProf :: Test#Run.

No sé quién tiene la culpa aquí.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top