2016-02-12 196 views
1

我正在写一些使用Cucumber和Serenity框架结合使用的BDD自动化测试。我需要在我的BDD测试中使用一些超时机制,这样如果一个黄瓜场景或者一个平静中的步骤花费太长时间,它将超时并且测试将失败。Serenity BDD或Cucumber BDD框架的超时设置?

我发现下面的链接的一些信息: https://groups.google.com/forum/#!topic/cukes/QaPvVMnqDvE

所以对于黄瓜,似乎在步骤定义以下设置应该做的工作:

@When(value="^I request web authentication$", timeout=1000) 
public myfunc(){ 
} 

对于宁静,我没发现任何设置超时,但我想这只是我还没有找到它。

然而,当我试图超时= XXX黄瓜,它似乎并没有工作。即使myfunc()在我的测试中挂了很长时间,测试也不会停止,只是挂起。

任何人都知道,如果有这种超时额外的设置= XXX工作?

也具有其自己的任何类似的超时机制平静使用?

最后我使用maven干净安装到驱动器测试,也许我错过了一些行家设置这个工作?

任何提示将非常感激。

回答

1

,而不是直接使用Maven的只安装到驱动器的测试,使用JUnit或TestNG和它一起做。 如果您使用JUnit,超时可以做的:

@Test(timeout = 20) 
public void try() { 
    while(true); 
} 

TestNG的作品也几乎相同的方式:

@Test(timeOut = 10000) 
public void try() { 
    while(true); 
} 

黄瓜有。而这两个JUnit和TestNG的兼容现有的依赖。


您尝试的黄瓜超时将工作仅当:

  • 正在使用的线程是在睡眠中您指定的超时呈现毫秒 数。为了克服这个问题,你可以创建一个单独的线程用于单独的测试,以便你的线程(用于测试挂起) 睡觉。但这可能不是你正在寻找的东西。
  • 线程变得不可中断,然后在指定超时的两倍 之后停止。

正如@aslakhellesoy @here

超时提到的停止线,如果他们是不间断。 ...

如果一个线程不响应中断(),我们将两次指定超时后试图阻止(),它 。

这使用不推荐使用的Thread.stop()方法,但对于像黄瓜这样的测试工具 应该没问题。

参考号343。

所以你必须减少一半的超时时间。