2012-08-28 59 views
2

TDD & BDD?哪些,爲什麼和如何?TDD&BDD?哪些,爲什麼和如何?

任何人都可以給出一個很好的解釋來證明兩者上的「爲什麼」,「爲什麼」和「如何」?

在此先感謝。

+0

文章主題:[Mocks Are Stubs](http://martinfowler.com/articles/mocksArentStubs.html) – oleksii

+3

你的問題應該是合理的範圍和具體。我會試着對這件事進行一些研究,如果你需要一些澄清,那就問問他們。還請閱讀[FAQ](http://stackoverflow.com/faq#d),其中提到了一個很好的問題 –

+0

kibyegn,我知道它沒有很好的範圍,但我在這裏提出的是兩個有力的證據,所以我可以很好地理解它。我會在下次考慮你的建議時,等待你的研究結果。不過謝謝。 – DotNetGeek

回答

1

TDD更多地用於單元測試,例如,在課堂上測試一種方法。 BDD用於測試系統的行爲,例如創建用戶,或發送新產品電子郵件。

所以對於TDD你可能會看到類似的東西。

public void Test() 
{ 
    // Arrange. 
    var sut = new ClassToTest(); 

    // Act. 
    int result = sut.SoSomething(); 

    // Assert. 
    Assert.Equal(result, 23); 
} 

隨着BDD(取決於您使用的工具),你會看到這樣的事情:

Feature: Add a user 
    As a system admin 
    In order to give a user access to the site 
    I want to create a user account 

Scenario: Creating a basic user 
    Given I have the user's name 
    When I create a new user account 
    Then that user can log onto the site 

如你,BDD是測試系統的行爲,而不是單一的單元。這是一個非常好的BDD丹介紹 - http://dannorth.net/introducing-bdd/

我建議使用TDD時,你正在建立你的類/代碼,並希望一次測試它的一點點。如果您想在測試中測試多個類中的一個,即集成測試,請使用BDD。

編輯:

隨着事情該怎麼側,用於BDD我會建議使用SpecFlow。這是一個流行的BDD工具,它爲Visual Studio添加了很多功能來創建特性文件(特性:我上面提到的東西)以及運行和調試測試。

引擎蓋下SpecFlow可以使用NUnit或MSTest來生成測試。其他BDD工具包括:

和許多其他我已經忘記了,現在:)我會建議你嘗試出來,看你喜歡哪一個。

對於TDD你有很多選擇,包括:

  • NUNIT
  • 的xUnit
  • MSTest的

很多上述工具可以在Visual Studio,這是很方便的通過的NuGet安裝。

+0

謝謝傑森,這是很好的和甜蜜的解釋開始,但我仍然會尋找一個很大的挖,因爲我想深入其中,爲什麼和什麼。乾杯。 – DotNetGeek

+0

關於您的問題的「什麼」部分,我們需要知道您打算使用哪種平臺和編程語言,例如,在Windows/Linux的/ Mac嗎? .NET,Ruby on Rails等? –

+0

對不起,傑森,這是怎麼樣,而不是什麼。打字時我正在想別的東西。僅供參考,我在Windows平臺上使用.Net。謝謝 – DotNetGeek