2009-11-12 43 views
4

我想知道花了多少时间来运行10个最耗时的测试..就像我能用rspec做的那样,有什么建议吗?如何才能描述ruby单元测试执行?

+1

另一个解决方案是知道有多少了每个测试,而不仅仅是10个最费时。 – 2009-11-12 14:18:28

+0

也许[这个插件](http://github.com/timocratic/test_benchmark)可以帮助你。 – 2009-11-12 16:06:43

+0

现在我试图端口rspec到单元测试... – 2009-11-12 16:20:13

回答

7

简短的回答:

gem install minitest # Install MiniTest 
gem install minitest_tu_shim # Install Test::Unit shim 
use_minitest yes # Use MiniTest Test::Unit shim instead of stdlib Test::Unit 
ruby your_test.rb -v # Run your test in verbose mode 

Ruby 1.9的使用MiniTest作为其默认的测试框架,而不是Test::Unit。 MiniTest体积更小,速度更快,具有更多实用功能,并且主要向后兼容Test :: Unit。其中一项新功能是用-v标志测量每次测试的时间。当您运行电子务必把这个标志的脚本

如果后,如导轨,使用Rake::TestTask运行测试,你就可以在运行时指定它运行

rake test TESTOPTS='-v' 

或通过增加-voptions属性,像这样

Rake::TestTask.new do |t| 
    t.options = '-v' 
end 

最后指定它的任务,如果你使用轨道和MINITEST刚刚是不是你不够好,你可能欣赏test_benchmark plugi ñ。用法很简单。以下行添加到您的config/environments/test.rb

config.gem "timocratic-test_benchmark", 
    :lib => 'test_benchmark', 
    :source => 'http://gems.github.com' 

RAILS_ENV='test' rake gems:install 

从此安装它,您会在运行测试得到一个很好的排序列表

rake test:units 
[...] 
Test Benchmark Times: Suite Totals: 
7.124 test_destroy(FeedTest) 
7.219 test_create(FeedTest) 
7.646 test_subscribe_to_auto_discovery(FeedTest) 
9.339 test_auto_discover_updates_url(FeedTest) 
9.543 test_find_or_create_by_auto_discover_url(FeedTest) 
15.780 test_import_from_opml(FeedTest) 

我很抱歉,MiniTesttest_benchmark插件互相不兼容,但我强烈建议您尝试MiniTest,因为它会让您的te速度更快,并将继续得到Ruby 1.9的支持。

+0

真的很酷!非常感谢! – 2009-11-13 18:09:18

+0

最近版本的'test-unit' gem也显示详细模式下的时间。 – 2010-02-11 00:16:00

+0

哎呀我测试了这个,我得到: ARGH!有人定义了Test :: Unit :: TestCase,而不是要求 /usr/local/lib/site_ruby/1.8/rubygems.rb:777:in'report_activate_error':找不到RubyGem测试单元(= 1.2.3)(Gem :: LoadError) 任何想法? – 2010-05-06 16:09:08

0

也许运行您的单元测试在红宝石探查器下执行代码ruby -rprofile而不是只是ruby

+0

感谢您的答案,我试图运行它像你说的,但我得到这个: /usr/lib/ruby/1.8/profiler。 rb:13:在'hash'中:bignum太大而不能转换成'long'(RangeError) – 2009-11-12 18:41:47