トップ «前の日記(2012/09/23 (日) ) 最新 次の日記(2012/09/25 (火) )» 編集 RSS feed

HsbtDiary


2012/09/24 (月) [長年日記]

[rails] parallel_tests で parallel:prepare を必ず実行する術

とある Web アプリケーションのテストの総実行時間が5分を超えてきたので parallel_tests を導入してみた。この Web アプリケーションはいわゆるマスタデータがなく、都度 db:test:prepare を実行するのを前提にテストが作られている。

しかし、parallel_tests な環境だとそれぞれのプロセスが db:test:prepare を実行してくれないという困る状態だったので、以下のようなコードを Rakefile に書いて parallel:spec 実行時には問答無用で parallel:prepare を実行するようにした。

Rake::Task['paralell:spec'].enhance(['paralell:prepare'])

database_cleaner 使ってテスト毎にデータベースを保全するという方法もあったんだけど、Web アプリケーション以外のデータベースを操作して、そのトランザクション状態を検証するというコードも入っていたりするので、上の方法を採用してしまった。