Test delle prestazioni Rails "Test del rastrello: benchmark" e "Test di rastrello: profilo" mi danno errori

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

Domanda

Sto cercando di eseguire un test di prestazioni predefinito vuoto con Ruby 1.9 e Rails 2.3.5 e non riesco proprio a farlo funzionare! Cosa mi manca qui ???

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...]
È stato utile?

Soluzione

Vedere questo. Per una patch, vedi qui.

Altri suggerimenti

OK, il problema è che Ruby 1.8 ha usato Test :: Unità come libreria di test predefinita. In Ruby 1.9 che è stato cambiato in Minitest.

Versioni di ActiveSupport prima del 3.1.0 assunto test :: unità. Sembra che sia stato affrontato in 3.1.0 e più tardi. Se stai usando Rails 3.0.9, ha una dipendenza da ActiveSupport 3.0.9, quindi non puoi chiedere versioni successive nel tuo GemFile.

Fondare questo tramite Google. Apparentemente, la biblioteca di test :: Unit è ancora disponibile, ma come una gemma chiamata "Test-Unit".

Quindi nel mio gemfile in cima prima della gemma delle rotaie, ho messo:

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

Poi ho eseguito il test di rastrello: benchmark e ha funzionato!

Penso che sia un bug. Sono in grado di eseguire il codice con Ruby 1.8.6 (2008-08-11 Patchlevel 287) [Universal-Darwin9.0]. Sotto Ruby 1.9.1, ricevo un'eccezione come quella che descrivi.

Quando raggiunge ActiveSupport :: Testing :: Performance#Run (in Rails) provoca un'eccezione sulla linea yield(self.class::STARTED, name) dove cerca di trovare la costante :: inizia. Anche Ruby Prof ha un metodo simile, sotto RubyProf :: Test#Run.

Non so chi sia in colpa qui.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top