2

Ruby1.9とRails2.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...]
4

3 に答える 3

9

OK、問題は、ruby1.8がデフォルトのテストライブラリとしてTest::Unitを使用したことです。ミニテストに変更されたルビー1.9で。

3.1.0より前のバージョンのActiveSupportは、Test::Unitを想定しています。3.1.0以降で対処されているようです。ただし、rails 3.0.9を使用している場合は、activesupport 3.0.9に依存しているため、Gemfileでそれ以降のバージョンを要求することはできません。

Googleでこれを見つけました。どうやら、Test :: Unitライブラリはまだ利用可能ですが、「test-unit」という名前のgemとして利用できます。

したがって、rails gemの前の上部にあるGemfileに、次のように配置します。

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

次に、rake test:benchmarkを実行しましたが、機能しました。

于 2011-12-20T17:36:54.693 に答える
2

バグだと思います。ruby 1.8.6(2008-08-11パッチレベル287)[universal-darwin9.0]でコードを実行できます。Ruby 1.9.1では、あなたが説明したような例外が発生します。

ActiveSupport :: Testing :: Performance#run(rails内)に到達するyield(self.class::STARTED, name)と、定数::STARTを見つけようとする行で例外が発生します。Ruby Profにも、RubyProf :: Test#runの下に同様のメソッドがあります。

ここで誰が悪いのかわかりません。

于 2010-04-02T03:45:58.443 に答える
1

これを参照してください。パッチについては、こちらをご覧ください

于 2010-04-02T03:54:57.987 に答える