優れた統計サンプルを取得するために、シナリオを数回実行しようとしています。ただし、ブロックは1回だけ実行されます。その後の時間ごとに、シナリオが呼び出されて実行されなくなります(ただし、シナリオは約5ミリ秒の時間で正常に完了したと表示されます)。
Around('@mass_benchmark') do |scenario, block|
$seconds_taken = "SECONDS TAKEN NOT SET"
@time_array = []
30.times do
before_hook(scenario)
block.call
after_hook(scenario)
@time_array << $seconds_taken
end
write_time_array_to_file(@time_array, scenario_name)
end
タグ@mass_benchmarkは、シナリオを正常に実行する〜@ mass_benchmarkとは対照的に、このブロックを実行します。メソッドbefore_hookとafter_hookは、Before('〜@ mass_benchmark')とAfter('〜@ mass_benchmark')フック(実際には同じメソッドを呼び出す)を複製します。
変数$seconds_takenは、私がタイミングをとっている特定の領域の周りに設定されます。私はそこでテスト全体のタイミングを計っているのではなく、テストの重要な部分にすぎません。テストの残りの部分は、タイミング部分の一部ではないそのポイントなどに到達しているので、タイミング部分をこれの外に移動することはできません。
問題は、これらのメソッドで実行していることにある可能性がありますが、私が知る限り、すべてが正常に機能します(適切に配置されたputsステートメントで示されます)。どんなアイデアでも大歓迎です!