Тесты на производительность Rails «Тест на грабли: эталонный тест» и «Тест граблей: профиль». Дайте мне ошибки

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

Вопрос

Я пытаюсь запустить пустой тест на производительность по умолчанию с Ruby 1.9 и Rails 2.3.5, и я просто не могу заставить его работать! Чего мне здесь не хватает ???

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...]
Это было полезно?

Решение

Видеть этоАнкет Для патча, см. здесь.

Другие советы

Хорошо, проблема в том, что использовал Ruby 1.8 Test :: Unit в качестве библиотеки тестирования по умолчанию. В Ruby 1.9, который был изменен на Minitest.

Версии ActiveSupport до 3.1.0. Похоже, он был адресован в 3.1.0 и позже. Если вы используете Rails 3.0.9, он зависит от ActiveSupport 3.0.9, поэтому вы не можете попросить более поздние версии в своем Gemfile.

Найденный это через Google. По-видимому, библиотека Test :: Unit все еще доступна, но как драгоценный камень под названием «Test-Unit».

Итак, в моем Gemfile на вершине перед драгоценным камнем, я положил:

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

Затем я запустил тест на Rake: эталон, и это сработало!

Я думаю, что это ошибка. Я могу запустить код с Ruby 1.8.6 (2008-08-11 Patchlevel 287) [Universal-Darwin9.0]. Под Ruby 1.9.1 я получаю исключение, подобное тому, которое вы описываете.

Когда он достигает ActiveSupport :: Testing :: Performance#Run (в Rails), это вызывает исключение на линии yield(self.class::STARTED, name) где он пытается найти константу :: Start. Ruby Prof также имеет аналогичный метод, в Rubyprof :: Test#Run.

Я не знаю, кто здесь виноват.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top