Rails性能测试"rake test:benchmark"和"rake test:profile"给我错误

go *_*mal 2 ruby ruby-on-rails performance-testing

我正在尝试使用Ruby 1.9和Rails 2.3.5运行一个空白的默认性能测试,但我无法让它工作!我在这里失踪了什么?

rails testapp
cd testapp
script/generate scaffold User name:string
rake db:migrate
rake test:benchmark
Run Code Online (Sandbox Code Playgroud)

-

/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...]
Run Code Online (Sandbox Code Playgroud)

mj1*_*531 9

好吧,问题是ruby 1.8使用Test :: Unit作为其默认测试库.在ruby 1.9中,改为MiniTest.

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'
Run Code Online (Sandbox Code Playgroud)

然后我跑了rake测试:基准测试,它工作了!