RSpecのテストケースが増えてくると実行時間も増えて、テスト全体の実行にすごく時間がかかる...なんてことありませんか?
profileオプションを使用するとexampleごとの実行時間がわかり、遅いテストを抽出することができます。
遅いテストを抽出する
$ bundle exec rspec --profile
デフォルトでは、遅いexample上位10個とその実行時間が出力されます。
bundle exec rspec --profile > ファイル名
でファイルへの出力も可能です。
$ bundle exec rspec --profile
...
Top 10 slowest examples (84.27 seconds, 17.0% of total time):
test example1...
13.98 seconds ./spec/requests/example_spec.rb:230
test example2...
7.91 seconds ./spec/requests/example_spec.rb:232
test example3...
7.84 seconds ./spec/requests/example_spec.rb:109
...
Finished in 8 minutes 14 seconds
1252 examples, 1 failure
--profile
の後ろに件数を指定することで、出力する件数を変えることができます。
$ bundle exec rspec --profile 20
と指定すると、遅いexample上位20個が出力されます。
すべてのテストの実行時間を調べる
$ bundle exec rspec --profile 全example数
と指定すれば、すべてのexampleの実行時間がわかります。
テストケースが多くてexample数がわからないという場合は、以下のコマンドでテストを実行せずに調べられます。
$ bundle exec rspec -f d --dry-run --order defined