2016-02-12 38 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。

所以你必須減少一半的超時時間。

相關問題