すでにこの質問を見て、それは多かれ少なかれ私が現在スイート全体をどのように実行しているかを反映しています。
さらに、次の rake タスクをセットアップしました。
Rake::TestTask.new do |t|
t.name = "spec:models"
t.libs << "test"
t.pattern = "spec/models/*_spec.rb"
end
しかし、これを を使用して実行するtime rake spec:models
と、約 2.36 秒で完了することに気付きました。を使用してそのディレクトリですべての個々のテストを実行するとruby /path/to/spec.rb
(現在、すべてが ActiveRecord から分離されています。永続性はまだないため、非常に高速です)、それらの累積合計ユーザー時間は 2.36 秒ですが、各ファイルに 0.4 ユーザーがかかることにも気付きました。開始から終了まで実行するのに数秒かかるため、MiniTest によって報告される実際の「テスト」時間ははるかに高速です (依存関係をロードした後のスイート全体は、2.36 秒ではなく、0.15 秒未満で実行されるはずです)。
例 (1 つのスペック ファイルの場合):
Started
11/11: 100% |======================================| Time: 00:00:00
Finished in 0.02223s
11 tests, 15 assertions, 0 failures, 0 errors, 0 skips
ruby path/to/spec.rb 0.43s user 0.06s system 88% cpu 0.559 total
各テストの実行の間に Rake がライブラリをリロードしているのではないかと考えており、それが余分な時間を占めています。これを確認したり、Rake を使用せずにスイート全体を実行したりできる方法はありますか?
time
ところで、先ほど「ユーザー時間」と言うときは、単一のテスト ファイルを実行するために ruby コマンドの先頭に追加して出力された最初の数値を指しているので、 time ruby /path/to/spec.rb
=ruby path/to/spec.rb 0.43s user 0.06s system 88% cpu 0.559 total