Rails -Leistungstests „Rake -Test: Benchmark“ und „Rake -Test: Profil“ geben mir Fehler

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

Frage

Ich versuche, einen leeren Standardleistungstest mit Ruby 1.9 und Rails 2.3.5 durchzuführen, und ich kann ihn einfach nicht zum Laufen bringen! Was vermisse ich hier ???

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...]
War es hilfreich?

Lösung

Sehen Dies. Für einen Patch siehe hier.

Andere Tipps

OK, das Problem ist, dass Ruby 1.8 Test :: Unit als Standard -Testbibliothek verwendet hat. In Ruby 1.9 wurde das in das Minitest geändert.

Versionen von Activesupport vor 3.1.0 übernahmen Test :: Einheit. Es sieht so aus, als ob es in 3.1.0 und später angesprochen wurde. Wenn Sie Rails 3.0.9 verwenden, hat dies eine Abhängigkeit von Activesupport 3.0.9, sodass Sie nach späteren Versionen in Ihrem GemFile nicht nachfragen können.

Gefunden Dies über Google. Anscheinend ist die Test :: Einheitsbibliothek noch verfügbar, aber als Juwel mit dem Namen "Testeinit".

Also stellte ich in meiner Gemfile oben vor dem Rails Juwel:

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

Dann habe ich einen Rake -Test durchgeführt: Benchmark und es hat funktioniert!

Ich denke, es ist ein Fehler. Ich kann den Code mit Ruby 1.8.6 (2008-08-11 PatchLevel 287) [Universal-Darwin9.0] ausführen. Unter Ruby 1.9.1 bekomme ich eine Ausnahme wie die, die Sie beschreiben.

Wenn es Activesupport :: Testing :: Performance#Run (in Rails) erreicht, verursacht es eine Ausnahme an der Linie yield(self.class::STARTED, name) Wo es versucht, die Konstante zu finden :: Start. Ruby Prof hat auch eine ähnliche Methode unter Rubyprof :: Test#Run.

Ich weiß nicht, wer hier schuld ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top