如何配置ruby单元测试执行?

Cla*_*esi 4 ruby unit-testing

我想知道运行10个最耗时的测试需要花多少时间...就像我可以用rspec做的那样,有什么建议吗?

Jos*_*ten 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
Run Code Online (Sandbox Code Playgroud)

Ruby 1.9 MiniTest用作默认的测试框架而不是Test::Unit.MiniTest更小,更快,具有更多有用的功能,并且与Test :: Unit大部分向后兼容.其中一个较新的功能是测量每个测试带-v标志的时间.当你运行时,请确保在脚本之后放置此标志

如果在rails中Rake::TestTask用于运行测试,则可以通过运行在运行时指定它

rake test TESTOPTS='-v'
Run Code Online (Sandbox Code Playgroud)

或者通过添加-voptions属性来在任务中指定它,就像这样

Rake::TestTask.new do |t|
  t.options = '-v'
end
Run Code Online (Sandbox Code Playgroud)

最后,如果您正在使用rails并且MiniTest对您来说不够好,您可能会欣赏该test_benchmark插件.用法很简单.将以下行添加到您的config/environments/test.rb

config.gem "timocratic-test_benchmark",
  :lib => 'test_benchmark',
  :source => 'http://gems.github.com'
Run Code Online (Sandbox Code Playgroud)

安装它

RAILS_ENV='test' rake gems:install
Run Code Online (Sandbox Code Playgroud)

从那时起,当您运行测试时,您将获得一个很好的排序列表

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

我很抱歉地说,MiniTesttest_benchmark插件都互不兼容,但我强烈建议你去尝试MiniTest,因为它会让你的测试速度更快,并会继续在Ruby 1.9中得到支持.