2012-02-23 33 views
4

我已經使用SpecFlow編寫了幾個長時間運行的端到端集成測試,但由於Nunit超時而導致它們失敗。從SpecFlow設置Nunit TimeoutAttribute

將[Timeout(x)]屬性添加到TestFixture可解決該問題,但每次更新該功能時都會覆蓋該問題。

如何以SpecFlow尊重的方式刪除或延長超時?

回答

1

我只是瞭解Specflow,但你能實現一個自定義標籤,可以做到這一點?也許你可以把它們放在BeforeScenario或BeforeFeature鉤子上?

+0

我不知道,說實話,居然沒有用過SpecFlow了一年多已經改變僱主。雖然新人剛剛開始引入,所以我可能會盡快嘗試。 – mavnn 2013-06-03 09:56:50

+0

[BeforeScenario(「TagName」]] – AndyM 2013-06-03 11:25:55

1

我們在談論多長時間? > 1分鐘? 它是否必須是完整的集成測試?

我正在閱讀黃瓜書 - 它建議您儘可能多地爲您的GIVEN步驟作弊,以減少運行所需的時間。 GIVEN步驟正在描述過去。

我有一個申請表,有5個部分要完成,只能在所有部分完成後才能提交。我想測試提交應用程序時發生的一些功能,最初我的GIVEN語句通過Selenium驅動網頁以完成表單的所有5個部分,以便我可以提交,我將其更改爲單個SQL命令來設置應用程序所有部分的狀態完成。這關於運行時間約一分鐘。

我測試的東西是提交行爲,填寫的部分測試是在別處完成的。

+0

你做了一個可能點,但在這個特殊情況下,我略微濫用SpecFlow作爲編寫端到端測試的快速方法。對我而言,最重要的是儘可能少地模擬這個特殊的用例 – mavnn 2013-06-03 09:52:34

+0

@mavnn,我以爲我是唯一一個在他們的意思是'好'的時候寫過'可以'的人,這是我第一次看到它不只是我。這很多,但我沒有注意到它出於同樣的原因,我自己這樣做,我現在正在過度這個 – Holf 2014-08-27 11:48:54

+1

@Holf - 不,我一直這樣做;我把它稱爲語音輸入,因爲我很難用手寫字:)任何聽起來類似於另一個字的詞都是公平的遊戲,最糟糕的是拼寫檢查程序不會幫助! – mavnn 2014-08-28 12:03:41

2

由於@DisscCoder說, 添加標籤類別在特徵文件的方案,並補充說,在掛鉤類相匹配的鉤.... SpecFlow運行所有場景的前場景代碼鉤碼的地方字符串匹配。

namespace ClassLibrary1 
{ 
    [Binding] 
    public class Hooks1 
    {    
     [BeforeScenario("LongTest")] 
     public void BeforeScenario() 
     { 
      // Code to set Nunit timeout 
     }       
    } 
} 

小黃瓜:

@LongTest 
Scenario: Calc Pi to 1m digits (long) 
    Given I am computing PI 
    And my precision is 1 million digits 
    Then my result is 3.14... 
+0

什麼是設置nunit超時的代碼? – 2017-12-27 09:44:03

相關問題