2012-01-27 179 views
14

我正在爲我們的網站實施一些煙霧測試。鑑於什麼時候測試 - 我需要一個「什麼時候」?

我爲現有的自動驗收測試/用戶故事使用了Given/When/Then格式。但現在我想做的初始煙霧測試:

Given I'm on the homepage

Then I should see "Welcome To The Site"

我缺少的東西?是沒有時間的「好」嗎?

使用的工具:MVC3,SpecFlow,NUnit的,華廷

回答

18

這是完全有效的語法省略任何的考慮,當或然後 -

(甚至給他們以任何順序混合specflow並不關心。)

然而,爲便於閱讀的目的,而不是省略當我常常改寫給定的,即

When I view the homepage 
Then I should see "Welcome To The Site" 

我喜歡省略定部分,因爲被認爲當以表明測試的作用是什麼。

如果步驟綁定的代碼是相同的,並且您想要重新使用它,則始終可以將給定的和我的時間綁定到相同的方法。

[Given(@"I'm on the homepage"] 
[When(@"I view the homepage"] 
public void NavigateToHomePage() 
{ 
    ... 
+1

實際上Specflow似乎並不關心你是否給出了一個步驟Given,When或Then,只要它綁定到正確的Given/when/then屬性即可。單詞的選擇很有趣,而且它似乎只是按順序執行這些步驟。 – perfectionist 2012-01-27 13:31:03

+0

這就像完美主義者說的那樣; specflow只需按照功能文件中所述的順序執行這些步驟即可。它並不關心你使用的屬性。 – 2012-01-27 15:40:26

+1

Doh - 評論中沒有新行!我會建議使用When-steps來清楚標記你正在測試的動作。如安排行爲聲明。 – 2012-01-27 15:41:23

-3

你不需要時。我喜歡考慮如下的Given/When/Then關鍵字

鑑於 - 這是一個準備步驟,做任何你需要能夠執行測試的東西 何時 - 這應該是你的測試將要驗證的一個動作。 然後 - 這應該是您根據When步驟中執行的操作驗證您的測試的地方。

以前的建議他們隻影響執行順序。

+0

你真的想說」你不需要什麼時候「嗎?你能解釋你爲什麼這麼想嗎?你的答案的其餘部分似乎暗示了什麼時候很重要。 – 2017-08-17 19:45:10

-1

道歉線程復活...

我可能已經走了有:

Given there is a homepage 
When I view the homepage 
Then I should see "Welcome To The Site" 

我喜歡讓每個Scenario至少一個GivenWhenThen - 不忘記你也可以使用AndBut(不是說它們與這種情況特別相關)。你甚至可以用*製作一個項目符號樣式列表。

11

我認爲你真的錯過了這裏的觀點。你總是需要一個When。這是你應該測試的東西!你可以省略的是Givens

你應該說的是,

When I visit the homepage 
Then I should see "Welcome To The Site" 

Given When Then真的是代表國家機器的一個更好的方式。

Given some initial state (in your case, non) 
When I perform some action (in your case, visiting the homepage) 
Then I have some final state (in your case, text displayed to a user) 

我喜歡做的事就是思考所有的事情必須存在,以允許When發生。在你的情況下,似乎沒有任何初始狀態。但考慮你是否有一些網絡應用程序。您需要在訪問首頁之前擁有初始狀態(您需要確保用戶已登錄);

Given a user (user must be stored in the database) 
And the user is logged in (a logged in user must be in the session) 
When the user visits their homepage 
Then the user should see "Welcome To Your Homepage" 

另一種情況是:

Given no logged in user (some people would leave this Given out, but I add it for completness) 
When a user visits their homepage 
Then the user should be redirect to the login page 

正如有人正確地指出,大多數BDD工具實際上並不Given When Then區分,但你應該! 'When When Then'的詳細性質被選擇爲讓我們的人更容易理解和幫助我們的思維過程。一臺機器可能不在乎你所說的步驟。在這種情況下,您應該盡一切努力在任何時候正確使用關鍵字。

0

我會說:

Given I have requested the home page 
When the home page loads 
Then I should see 'Welcome To The Site' 
0

我傾向於認爲由於作爲傳統的前置條件等同。當作相當於測試行動時。然後等同於預期的結果。

因此,如果沒有先決條件,我就離開了考慮,只是專注於什麼時候,然後:

When I'm on the homepage 
Then I should see "Welcome To The Site" 

Specflow將允許您使用給定或當,但Visual Studio還允許你寫一個長度爲1000年的單一類。僅僅因爲兩者都是可能的,並不意味着兩者都是「正確的」。

相關問題