Selenium webdriver 网络故障后继续执行测试

Selenium webdriver 网络故障后继续执行测试,selenium-webdriver,junit,Selenium Webdriver,Junit,这是一个面试问题,让我措手不及。我们有一个含5,6个硒测试的硒测试类 测试3正在执行,网络出现故障。现在,一旦网络恢复,如何配置框架,使其从失败的地方开始,比如从第三次测试开始。并且应该执行已经执行的测试1和2。假设框架是junit 我不同意贾瓦盖的回答。我认为这个问题完全正确。作为概念的单元测试和作为工具的JUnit之间有很大的区别 javaguy的回答中描述的是单元测试。这些确实不能使用任何东西,只能将类加载到内存中并写入。但使用SeleniumWeb驱动程序的测试肯定不是单元测试。选择JU

这是一个面试问题,让我措手不及。我们有一个含5,6个硒测试的硒测试类


测试3正在执行,网络出现故障。现在,一旦网络恢复,如何配置框架,使其从失败的地方开始,比如从第三次测试开始。并且应该执行已经执行的测试1和2。假设框架是junit

我不同意贾瓦盖的回答。我认为这个问题完全正确。作为概念的单元测试和作为工具的JUnit之间有很大的区别

javaguy的回答中描述的是单元测试。这些确实不能使用任何东西,只能将类加载到内存中并写入。但使用SeleniumWeb驱动程序的测试肯定不是单元测试。选择JUnit作为实现这些测试的框架是有效的。当然,我们可以争论JUnit是否是最好的工具,但这是另一回事,如果JUnit被选为这些测试的实现工具,那么这是一个有效的选择

关于你的问题。有很多不同的方法来实现你想要的

  • 创建允许重新运行测试的JUnit规则。一般来说,如果您熟悉AOP术语,那么规则有点像拦截器或方面。他们拦截测试,使其失败,然后可以重新运行。您可以找到一个问题来解释规则并提供一些链接

  • 实现自定义运行器。这种方法只有在不使用其他运行程序时才有效,因为JUnit只为运行程序提供一个插槽。 此自定义运行程序将再次拦截测试调用,并在网络出现故障/ping网络时重新运行,然后等待,并且只有在“返回”时才会重新运行。然后您可以使用
    @RunWith
    注释在测试中激活您的实际跑步者

  • 实用解决方案。假设selenium web驱动程序是测试中唯一真正依赖于网络的东西,那么将selenium驱动程序调用包装到调用中。为selenium中的所有调用提供
    try/catch
    ,并在捕获异常时重试。您甚至可以为此使用方面或手动实现包装器

  • 在Jenkins/您的构建工具级别上也有一些解决方案,但我认为它们实际上超出了范围