我試圖運行一個場景幾(30)次,以獲得一個很好的統計樣本。但是該塊只能執行一次;隨後的每個時間都會導致該方案被調用並且不會執行(儘管它表示該方案的成功完成時間約爲5毫秒)。胡蘿蔔周圍的黃瓜調用塊多次(Ruby)
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設置在我正在計時的特定區域周圍。我不是在整個測試的時間,只是其中的關鍵部分;測試的其餘部分已經到了這一點,等等,這不是定時部分的一部分,所以我不能將定時部分移動到這之外。
這個問題可能與我在這些方法中所做的事情有關,但據我所知,一切正常(正如放置的語句所示)。任何想法表示讚賞!
我認爲你可以使用'yield',而不是'block.call'。它也更高效。 – 2012-04-19 21:00:31
投入產量會導致它返回「空測試套件」,即使它不是。這可能是因爲block.call是另一個塊內 – 2012-04-19 21:08:36
你有一個IDE你可以用它來放斷點?我最好的猜測是,在測試之後,你可能沒有重新設置一些值,導致你的測試在每次後續運行中都沒有任何事情要做。 – 2012-04-20 20:21:20