【发布时间】:2012-01-07 20:50:18
【问题描述】:
有没有办法拥有一个 JUnit 规则或类似的东西,让每个失败的测试都有第二次机会,只需尝试再次运行它。
背景:我有大量用 JUnit 编写的 Selenium2-WebDriver 测试。由于非常激进的时间安排(点击后只有很短的等待时间),一些测试(100 次中的 1 次,并且总是不同的测试)可能会失败,因为服务器有时会响应较慢。但是我不能让等待时间太长以至于它绝对足够长,因为那样测试将永远持续。) - 所以我认为对于这个用例来说,即使需要第二个测试也是绿色的也是可以接受的试试看。
当然最好有 3 票中的 2 票(重复失败的测试 3 次,如果其中两个测试正确,则认为它们是正确的),但这将是未来的改进。
【问题讨论】:
-
在 selenium 2 中没有必要修复等待时间。WebDriver 应该检测页面加载并相应地等待。如果您想等待页面加载以外的其他内容,例如执行一些 JavaScript,您应该使用 WebDriverWait 类,请参阅:seleniumhq.org/docs/04_webdriver_advanced.html。也就是说,我认为重试 GUI 测试可能没问题,我只是想澄清一下,在大多数情况下不需要明确的等待时间。
-
确实如此,但我还要指出,我曾在一些非常非常糟糕的服务器上工作过,这些服务器“很好”,但它们有一个 REALLY 长时间的旋转某些页面实例的正常运行时间,因此,我不想失败。这是一个很好的问题,谢谢。 (当然,我希望时间始终保持一致,我们将推动这一点,但在那之前,这将不得不这样做)
-
如果您正在使用黄瓜 rerun.txt 功能,请找到我的答案here
-
如果您使用 Cucumber rerun.txt 功能,请参阅 ans here.