分享 分享 快速运行多个测试

ery · 2013年07月31日 · 最后由 rainchen 回复于 2013年08月02日 · 3116 次阅读

背景

开发的时候,所有测试运行一遍需要 10 分钟左右, 所以,我选择只运行和我当前工作有关的,某几个测试。

BTW 因为我改动代码的范围比较大,所有没有使用 spork

运行多个测试 常规方法

ery@tkpad:rails_app:$ rake test TEST=test/functional/day_reports_controller_test.rb ery@tkpad:rails_app:$ rake test TEST=test/functional/month_reports_controller_test.rb

该方法的缺点是,运行 n 个测试,需要加载 n 次 rails 环境, 如果,运行 10 个测试,需要加载 10 次, 非常耗时,让我难以忍受,虽然我忍受 N 年了。

我 google 了一圈,木找到我喜欢的解决方案。 于是自己写了一个 bash 脚本。

运行多个测试 新的方法

ery@tkpad:rails_app:$ suitup-multi-test-prepare ery@tkpad:rails_app:$ suitup-multi-test-add test/functional/day_reports_controller_test.rb ery@tkpad:rails_app:$ suitup-multi-test-add test/functional/month_reports_controller_test.rb ery@tkpad:rails_app:$ suitup-multi-test-run

Bash 相关代码

RUBY_MULTI_TEST="/tmp/ruby_multi_test.rb"

function suitup-multi-test-prepare { sudo rm $RUBY_MULTI_TEST 2> /dev/null }

function suitup-multi-test-add { WORK_FOLDER=pwd echo "require '$WORK_FOLDER/$1' " >> $RUBY_MULTI_TEST }

function suitup-multi-test-status { cat $RUBY_MULTI_TEST 2> /dev/null }

function suitup-multi-test-run { suitup-multi-test-status ruby -I test/ $RUBY_MULTI_TEST }

这个应该效果一样——

ruby -Itest test/functional/day_reports_controller_test.rb test/functional/month_reports_controller_test.rb

:+1 厉害,顶一个

所有测试运行一遍需要 10 分钟左右,这得有六七千个测试了吧,这项目好大……

#1 楼 @fredwu 我刚才试了一下,这个方法不行,只有 test/functional/day_reports_controller_test.rb 文件被执行了,后面的文件没有被执行

#3 楼 @aptx4869 没有 67 千,1 千个左右差不多,我们有些测试很大,而且我的 CPU 是 2.3G 的,比较弱!

需要 登录 后方可回复, 如果你还没有账号请 注册新账号