我试图运行一个场景几(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