背景:
我们在 Windows 虚拟机上通过 Jenkins 运行 Cucumber。我们经常会遇到以下异常(可能每天两次左右,而套件运行 5 或 6 次):
No connection could be made because the target machine actively refused it. - connect(2) (Errno::ECONNREFUSED)
这个异常是没有规律的。它可以在任何步骤、任何代码行上发生。我偶尔也会(虽然很少)在本地遇到它。Cucumber失去了与浏览器交互的所有能力,之后的所有测试都失败。
在这段代码中
After do |scenario|
if scenario.failed?
我想检查是否出现了特定的异常。如果是,我将通过系统调用关闭Chrome浏览器,然后再重新启动它(这很容易)。但是,我希望重新运行刚刚失败的场景,然后继续执行剩余的测试套件。这可能吗?
顺便说一下:我知道浏览器没有关闭有两个原因。1. 在本地我可以看到它。2. 尝试重新启动测试会导致VM上失败,因为Chrome被卡住了。VM没有关机。请记住,这种情况有时也会在本地发生。我花了几个小时搜索解决此问题的解决方案,但我们没有找到有效的方法。
版本:
Cucumber 1.3.8
ruby 1.9.2
chromedriver 2.4
chrome 29 (We run tests against a javascript environment that uses GWT, which often breaks with new chrome releases)
提前感谢您!