2010-03-30 58 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