2016-11-12 37 views
1

这是一个采访我的检票口的问题。我们有5,6个硒测试的硒测试课。测试3正在执行中,并且发生网络故障。现在一旦网络恢复,如何配置框架,以便从第三次测试失败的地方开始。并应执行已执行的测试1 & 2.假设框架是junit。网络故障后继续执行测试

回答

2

我不能同意javaguy的回答。我认为这个问题完全有效。作为一个概念的单元测试和作为工具的JUnit之间有很大的区别。

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

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

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

  2. 实现自定义运动员。只有当您没有使用其他跑步者时,这种方法才会起作用,因为JUnit仅为跑步者提供了一个插槽。 这个自定义运行器将再次拦截测试呼叫,并将在网络故障/ ping网络时重新运行并等待,并且只有当它将“返回”时才会重新运行。然后您可以使用@RunWith注释激活您的实际跑步者测试。

  3. 适用的解决方案。假设,在您的测试中,硒web驱动程序是唯一实际依赖网络的东西,将硒驱动程序调用包装到您的调用中。为硒的所有呼叫提供try/catch,并在发现异常时重试。你甚至可以为此使用方面或手动实现包装。

  4. 有在詹金斯/你的构建工具的水平也有一些解决方案,但我认为这些都是超出范围实际上...

希望这有助于