为什么我看不到Cucumber“Around”中抛出的异常?

时间:2011-12-06 22:17:29

标签: ruby cucumber

我有一组黄瓜测试可以在构建服务器上运行。

我经常想要比服务器直接提供更快的反馈,因此我在运行时观察控制台输出。我想要一种用单个搜索词来识别任何失败测试的方法,所以我修改了我们的周围来打印任何异常的“失败测试”,但Ruby似乎并没有将异常交给周围。我已经通过在开始...结束后发表声明来验证这一点。

有没有人知道为什么会发生这种情况,或者在开始时包装因失败测试而引发的任何异常?

Around() do |scenario, block|
  begin
    Timeout.timeout(0.1) do
      block.call
    end
  rescue Timeout::Error => e
    puts "Failed Test"
    puts caller
  rescue Exception => e
    puts "Failed Test"
    raise e
  end
end

2 个答案:

答案 0 :(得分:1)

看看黄瓜1.3.12,它实际上拯救了场景步骤中的任何异常。因此,如果不修改黄瓜宝石,你就无法以任何方式看到它们。

有关更多信息,请参阅我的答案,了解如何在该位置放置调试钩子: https://stackoverflow.com/a/22654786/520567

答案 1 :(得分:-1)

您是否尝试过使用@ allow-rescue标记禁用Cucumber的异常捕获?

@ allow-rescue:关闭Cucumber对标记场景的异常捕获。在被测试的代码应该引发和处理异常时使用。

https://github.com/cucumber/cucumber/wiki/Tags