TDDとBDD? どれが、なぜ、どのように?
両方の「どちら」、「なぜ」、「どのように」を正当化するための適切な説明を誰かが与えることができますか?
前もって感謝します。
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 には、次のような多くのオプションがあります。
上記のツールの多くは、便利な Visual Studio で NuGet を介してインストールできます。