2

TDDとBDD? どれが、なぜ、どのように?

両方の「どちら」、「なぜ」、「どのように」を正当化するための適切な説明を誰かが与えることができますか?

前もって感謝します。

4

1 に答える 1

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 は単一のユニットではなくシステムの動作をテストしています。これは、Dan North による BDD の非常に優れた紹介です - http://dannorth.net/introducing-bdd/

クラス/コードを構築していて、一度に少しずつテストしたい場合は、TDD を使用することをお勧めします。テスト、つまり統合テストでこれらのクラスを 1 つ以上テストする場合は、BDD を使用します。

編集:

方法の面では、BDD にはSpecFlowを使用することをお勧めします。これは、Visual Studio に機能ファイル (機能: 上記のもの) を作成し、テストを実行およびデバッグするための多くの機能を追加する、一般的な BDD ツールです。

内部的には、SpecFlow は NUnit または MSTest を使用してテストを生成できます。その他の BDD ツールには次のものがあります。

そして、私が今忘れている他の多くのもの:)それらを試してみて、どれが好きかを確認することをお勧めします.

TDD には、次のような多くのオプションがあります。

  • NUNit
  • xUnit
  • MSTest

上記のツールの多くは、便利な Visual Studio で NuGet を介してインストールできます。

于 2012-08-28T08:32:14.190 に答える