2010-03-30 59 views
2

我試圖用Ruby 1.9和Rails 2.3.5運行一個空白的默認性能測試,我只是無法得到它工作!我在這裏想念什麼?Rails性能測試「耙測試:基準」和「耙測試:配置文件」給我的錯誤

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...] 

回答

1

參見this。 有關修補程序,請參閱here

+0

引用的修補程序並沒有真正解決我的問題。我正在運行Ruby 1.9.2,並且出現此錯誤。 – mj1531 2011-12-20 16:46:27

+4

這個答案容易受到鏈接腐蝕...... – Neal 2011-12-21 17:28:23

2

我認爲這是一個錯誤。我能用ruby 1.8.6(2008-08-11 patchlevel 287)[universal-darwin9.0]運行代碼。在Ruby 1.9.1下,我得到了一個例外,就像你描述的那樣。

當它到達ActiveSupport :: Testing :: Performance#run(in rails)時,它會在行yield(self.class::STARTED, name)處嘗試查找常量:: START時導致異常。在RubyProf :: Test#運行下,Ruby Prof也有類似的方法。

我不知道誰在這裏過錯。

9

好的,問題是,紅寶石1.8使用Test :: Unit作爲其默認測試庫。在改變爲MiniTest的紅寶石1.9中。

3.1.0之前版本的ActiveSupport假定Test :: Unit。看起來它已經在3.1.0及更高版本中得到了解決。如果你使用rails 3.0.9,它依賴於activesupport 3.0.9,所以你不能在你的Gemfile中要求更高版本。

通過Google找到this。顯然,Test :: Unit庫仍然可用,但作爲名稱爲「test-unit」的gem。

所以我在軌寶石前頂部的Gemfile,我把:

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

然後我跑耙測試:基準測試,它的工作!

+1

謝謝你張貼這個。這解決了我的問題。 – 2011-12-22 19:18:17