Rspec で各テストケースにかかった時間を確認する方法

概要

プロジェクトで Rspec を使用しており、各テストケースにかかった時間を出力したいのですが、Rspec が事前に構築された関数を提供する方法はありますか? example.execution_result.started_at でテストケースの開始時刻を取得できますが、テストケースの終了時刻を取得する方法がわかりません。終了時刻を取得できれば、開始時刻から終了時刻を減算して取得できます。各テストケースの期間。この場所で私を助けてくれる人はいますか?このコードを書きました

around(:each) do |example|
  startTime=Time.now
  var=example.run
  puts var
  endTime=Time.now
  duration=endTime-startTime
  puts "Time Taken->#{duration.to_f/60.to_f}"
end

しかし、私は Rspec が各テストケースの期間を返すために何らかの事前定義されたメソッドを提供しているに違いないと強く信じています。それを知っている人はいますか?

解決策

RSpec には、個々のテストの実行時間を含むファイルを生成する example_status_persistence_file_path 構成があります。

たとえば、次の RSpec 構成/例があるとします。

require 'rspec/autorun'

# Enable the reporting
RSpec.configure do |c|
  c.example_status_persistence_file_path  = 'some_file.txt'
end

# Run some tests
RSpec.describe 'some thing' do
  it 'does stuff' do
    sleep(3)
  end

  it 'does more stuff' do
    sleep(2)
  end
end

各サンプルのステータスと実行時間のレポートが生成されます。


example_id      | status | run_time     |
--------------- | ------ | ------------ |
my_spec.rb[1:1] | passed | 3.02 seconds |
my_spec.rb[1:2] | passed | 2.01 seconds |