Когда я начал смотреть на BDD, я исследовал все фреймворки (для .net) и в итоге не использовал ни одну из них. Основная причина в том, что я чувствую, что сообщество еще не определилось с синтаксисом и лучшими практиками, поэтому вместо этого я продолжил использовать NUnit с базовым классом, основанным на блоге Бена Шейрмана. Это сработало очень хорошо, потому что BDD не об инструментах, а о том, чтобы сделать тесты чистыми и понятными, что вполне возможно при использовании обычных инструментов, таких как nunit.
По сравнению с моими старыми модульными тестами, новый стиль гораздо более читабелен и уделяет гораздо больше внимания именам и поведению. Мы не так уж далеки от распечатки названий методов и обсуждаем систему с деловыми людьми.
Некоторое дополнительное чтение Скоттом Беллваром: Разработка, управляемая поведением
Экзамен теста:
public class WhenAddingLineItemToEmptyOrder : BDDBase
{
Order order;
[SetUp]
public void Arrange()
{
order = new Order();
}
public void Act() // called by BDDBase
{
LintItem item = new LineItem();
item.Quantity = 1;
item.Price = 10;
order.AddLineItem(item);
}
[Test]
public void TotalPriceShouldBeUpdated()
{
Assert.AreEqual(10, order.TotalPrice);
}
[Test]
public void OrderCanBeCheckedOut()
{
Assert.IsTrue(order.CanBeCheckedOut)
}
}