Tests de performances des rails «Test de râteau: référence» et «Test de râteau: profil» me donnent des erreurs

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

Question

J'essaie d'exécuter un test de performances par défaut vierge avec Ruby 1.9 et Rails 2.3.5 et je ne peux tout simplement pas le faire fonctionner! Qu'est-ce que j'oublie ici???

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...]
Était-ce utile?

La solution

Voir cette. Pour un patch, voir ici.

Autres conseils

Ok, le problème est que Ruby 1.8 a utilisé un test :: comme sa bibliothèque de test par défaut. Dans Ruby 1.9 qui a été changé pour Minitest.

Les versions d'ActiveSupport avant 3.1.0 Test supposé :: Unité. Il semble qu'il ait été traité en 3.1.0 et plus tard. Si vous utilisez Rails 3.0.9 cependant, il dépend de ActiveSupport 3.0.9, vous ne pouvez donc pas demander des versions ultérieures dans votre gemfile.

Trouvé cette via Google. Apparemment, la bibliothèque d'unités Test :: est toujours disponible, mais en tant que gemme nommé «unité de test».

Donc, dans mon Gemfile en haut avant le joyau des rails, j'ai mis:

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

Ensuite, j'ai effectué Rake Test: Benchmark et cela a fonctionné!

Je pense que c'est un bug. Je suis en mesure d'exécuter le code avec Ruby 1.8.6 (2008-08-11 Patchlevel 287) [Universal-Darwin9.0]. Sous Ruby 1.9.1, j'obtiens une exception comme celle que vous décrivez.

Quand il atteint ActiveSupport :: Testing :: Performance # Run (en rails), il provoque une exception à la ligne yield(self.class::STARTED, name) où il essaie de trouver la constante :: Commencez. Ruby Prof a également une méthode similaire, sous RubyProf :: Test # Run.

Je ne sais pas qui est en faute ici.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top