2010-07-05 56 views
1

當使用BDD進行更高級別的測試時,那麼測試中的這種語言 - 給定的時候,似乎很容易理解。我使用C#。因此,我所做的是將該類命名爲「whenthishappens 「,setup是」給定的「,然後我進行了測試。但是,在爲類方法編寫測試時如何使用這種類型的BDD。或者,我應該只測試名爲」shouldDoXXX「的測試。使用BDD風格的測試

+0

你有沒有考慮任何的BDD框架可用於.NET?請參閱http://stackoverflow.com/questions/307895/what-is-the-most-mature-bdd-framework-for-net – bjg 2010-07-05 10:54:19

回答

2

我通常給我的測試命名爲shouldDoXXXX,其中測試名稱描述了它應該爲所有類似的上下文做些什麼。所以我可能會說shouldAddUpTwoNumbersCorrectly。這與很多BDDers的做法有些不同 - Ruby人羣似乎特別喜歡shouldAddTwoPlusTwoToMakeFour,所以重複他們使用的特定示例。無論哪個適合你!

public void ShouldAddUpTwoNumbersCorrectly() 
{ 
    // Given two numbers 
    // When I give them to the summer 
    // Then the result should be the sum of the two numbers 
} 

然後,我填寫的意見之間的代碼:

測試裏面,當/然後我經常寫評論給出/。如果測試非常簡單,我可以跳過評論。

我不打擾英語可讀框架的類測試,因爲觀衆是技術性和能夠讀取代碼。創建Given/When/Then的BDD框架主要是爲了幫助與非技術利益相關者進行對話,並鼓勵開發人員使用他們的語言。我不覺得他們在課堂上很有用。因人而異。

2

這裏是一個博客,我寫了一篇關於BDD的風格測試基於MSTest的代碼:

http://mrclyfar.blogspot.com/2010/02/amazing-mapping-demo-at-ted-2010.html。我使用了這個blog的帖子。我個人測試時使用StoryQ。 StoryQ是一個類似於MSpec和SpecFlow的測試框架,因爲您可以以更具描述性的方式編寫測試。一開始,我嘗試使用BDD命名MSTest風格的代碼,但我發現它不夠靈活,然後我想。然後我嘗試了MSpec,這非常棒。

最後我選擇了StoryQ,因爲它有一點我更喜歡的冗長。使我能夠更輕鬆地編寫描述性測試,而無需使用上下文繼承。

+0

所以,當你爲一個類編寫單元測試時,你使用\ when \ then格式?所以,你將有多個類來測試一個類,因爲當代表一個場景 – jess 2010-07-05 11:14:07

+0

是的,你會有'多個'場景的多個類。這是我在Eric Lee博客文章中描述的建議做法。 – 2010-07-05 11:20:36

+0

我只是潛入StoryQ。並且,能夠編寫測試。我正在使用MBUnit Gallio來運行測試。但是,我沒有在故事格式的任何地方看到描述性輸出 – jess 2010-07-05 13:45:22

1

這個C#框架,不正是你所需要的東西,可以讓你與IWantTo開始測試方法的名稱

public void IWantTo...() 

它是開源的,並在

發現

將此轉換爲...

[Test] 
public void IWantToRegisterANewUser() 
{ 
    ICustomer customer = new Customer(); 

    SoThat(MyBusinessValue.IncreaseCustomerBase) 
    .As(new User()) 
    .Given(customer.Register) 
    .When(customer.Confirm_Registration) 
    .Then(customer.Login); 
} 

這個...

I want to register a new user 
    So that Increase customer base 
     As user 
    Given Register customer 
    When Confirm customer registration 
    Then Login customer