railsの規模がそこそこになってきて、テストもしっかり書いていると全テストの実行に時間がかかるようになってくる。
そうなると、テストを全て実行しなくても次の肯定に進んだり、他の人やジェンキンス氏に「テスト落ちてるよ」と言われてはじめてミスに気づいたり・・色々と問題がある。
なので、テストの実行時間を短くするために、並列テストを行なってみた。
今回使ったのは、parallel_testsというgem
https://github.com/grosser/parallel_tests
これの設定はかなり簡単で、まずGemfileにこのgemを追加する。
gem 'parallel_tests'
parallel_testsを使った並列テストでは、CPUの数だけ並列する。
そしてCPUの数だけテスト用のデータベースを用意する必要がある。
config/database.ymlのテストデータベース名に、TEST_ENV_NUMBERという変数を付随する。
test:
database: project_test<%= ENV['TEST_ENV_NUMBER'] %>
そして以下のコマンドを打つ。
bundle install
rake parallel:create
rake parallel:prepare
これで準備が終了!
あとは実行するだけ!
rake parallel:spec
これでテスト時間がCPUの数だけ改善される。
でもやっぱり、リモートのハイスペックなサーバーでテストしたほうが良いよね・・
macbookじゃ2コアだし。