2

我正在尝试使用 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...]
4

3 回答 3

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 中要求更高版本。

通过谷歌找到这个。显然,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 patchlevel 287) [universal-darwin9.0] 运行代码。在 Ruby 1.9.1 下,我遇到了您所描述的异常。

yield(self.class::STARTED, name)当它到达 ActiveSupport::Testing::Performance#run(在 rails 中)时,它会在尝试查找常量 ::START的行处引发异常。Ruby Prof 也有类似的方法,在 RubyProf::Test#run 下。

我不知道这是谁的错。

于 2010-04-02T03:45:58.443 回答
1

看到这个。有关补丁,请参见此处

于 2010-04-02T03:54:57.987 回答