LoginSignup
13
12

More than 5 years have passed since last update.

rspecをparallel_testsを使って高速化する

Last updated at Posted at 2015-12-28

環境

Ruby on Rails 4.2.5
ruby2.2.3

はじめに

テストが増えてきて実行時間が気になるようになってきたので
テストを並列で走らせることができる「parallel_test」を導入してみました。(test_queueと迷いましたがとりあえず、、、)
並列で走らせるプロセスの数だけデータベースが必要となります。

セットアップ

インストール

Gemfile
gem 'parallel_tests'
$ bundle install

テスト用データベースの準備

database.yml
test:
  database:  db_test<%= ENV['TEST_ENV_NUMBER'] %>

テストを4つ並列で走らせる場合、データベース名は
db_test
db_test2
db_test3
db_test4
のようになります。

データベースのセットアップ

$ rake parallel:create
$ rake parallel:prepare

データベースのセットアップをまとめて行いたい場合

seeds.rbに書いてある内容も実行される

$ rake parallel:rake[db:setup]

$ rake parallel:rake[実行したいタスク]
のようにすればrakeタスクを走らせることができる。

テスト実行

$ rake parallel:spec

ファイルを指定して実行

users_controller_spec.rbを走らせたい場合

$ rake parallel:spec[users_controller]

以下のようにするとファイル名にuserを含むテスト(models/user_spec.rbなどuserと名前のつくもの)がすべて実行される。

$ rake parallel:spec[user]

以下のようにするとmodelsディレクトリにある、ファイル名にuserを含むテストが実行されます。

$ rake parallel:spec[user]

僕の環境では実行時間はおよそ半分になりました。

13
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
12