2011-11-14 34 views
0

這是一個後續行動,我剛纔的問題上設置標籤:Can I use tags in SpecFlow to determine the right environment to use?,並從這些標籤設置變量:How to set up a URL variable to be used in NUnit/SpecFlow framework當NUnit的控制檯亞軍和SpecFlow運行多個標籤,我得到不正確的結果

我已經設置了有些變量有助於填充我的NUnit測試,但我發現,當NUnit跑步者發現符合第一個標籤的測試時,測試會使用第二個標籤的設置運行它。由於標籤對我來說很重要,因爲它不僅知道要運行什麼測試,而且要使用哪些變量,這會給我帶來問題。

所以,如果我有以下標籤:

@First

@first @second

@second

如果我跑@second一切都很好。如果我運行@first,我會得到任何只有@first罰款的場景,但是當涉及到@first @second這兩個場景運行的場景時,因爲@first在那裏,但是它會使用@second參數。由於我通過NUnit-Console運行DLL,並且測試是通過SpecFlow編寫的,所以我不確定問題出在哪裏。

有沒有人有建立測試運行的建議?

回答

1

你不是很具體,但它聽起來像是你有這樣一個特點文件:

@first 
Scenario: A - Something Specific happens under the first settings 
    Given ...etc... 

@second 
Scenario: B - Something Specific happens under the second settings 
    Given ...etc... 

@first @second 
Scenario: C - Something general happens under the first and second settings 
    Given ...etc... 

它看起來像您選擇測試通過在運行所有測試在NUnit的運行「第一「類別。

如果設置了事件的定義是這樣的:如果執行方案C,然後FirstSettings()SecondSettings()將收到執行

[BeforeFeature("first")] 
public static string FirstSettings() 
{ ... } 

[BeforeFeature("second")] 
public static string SecondSettings() 
{ ... } 

。這與您是否使用@second類別選擇要在NUnit下運行的測試無關。

這幾乎可以肯定是你看到第二個設置應用於你的測試的原因 - 我期望第二個設置覆蓋第一個設置,對嗎?

我對建立這樣的測試的唯一建議是將事件綁定到特定標記可能有用,但應儘可能少使用。相反,請將您的單個步驟定義重複使用,並在可能的情況下用Given步驟設置您的測試環境。

+0

是的,這就是發生了什麼事。我已經問了幾次,忘了在這裏提到這個細節。但是你是對的,這是我正在做的事情,因爲我有兩個我想要運行測試的環境,但他們有不同的配置,我不得不看看給定的步驟,但測試在兩個環境中完全相同而我嘗試的方式似乎是最容易做到的。 – MichaelF

+0

我真的想要建立我對specflow的實踐知識。如果您想再次分享您的問題作爲新問題或對此問題的補充,我會很樂意迴應。 – perfectionist

相關問題