浏览 1646 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-05-31
rspec可以加上参数--drb,加快测试速度。如果不用rspec,标准方法写测试,每次执行rake,加载环境会损耗相当多的时间。每次测试都要对着屏幕发呆18秒,这是在是太蠢了…… 跟踪发现最主要耗时操作是调用了两次 Rails::Initializer.run(:process, ...) (似乎第一次是加载RAILS环境,第二次是加载测试库) 我简单的写了2个RAKE任务,用DRB来解决这个问题。 app/lib/tasks/test_server.rake require 'drb/drb' class TestServer def run(stdout, stderr) $stdout = stdout $stderr = stderr # puts ">>>> rake test:recent" # time_begin = Time.now # test:recent on DRb server Rake::Task["test:recent"].invoke # time_elapse = Time.now - time_begin # puts " << cost #{time_elapse}s" end end # rake test:server # rake test:remote namespace :test do desc 'Run test server on DRb' task :server => :environment do DRb.start_service("druby://localhost:8999", TestServer.new) puts "ready" DRb.thread.join end desc 'Run recent tests on remote server.' task :remote do DRb.start_service remote = DRbObject.new_with_uri("druby://localhost:8999") remote.run($stdout, $stderr) end end 先启动服务 rake test:server 然后用下面的命令,实现 rake test:recent 的快速版 rake test:remote 思路很简单,加载环境的动作,都丢在DRb server 第一次 rake test:remote 还是要加载库环境,但以后再访问就不用了 在DRB只实现了 rake test:recent 这个频率最高的动作,如果需要,可以自己去扩展 期待更好的建议 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |