Pruebas de rendimiento de Rails "Prueba de rastrillo: Benchmark" y "Test Rake Test: Perfil" Dame errores
-
23-09-2019 - |
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...]
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í.