2012-04-03 3 views

ответ

4

Существует несколько типов испытаний: модульные испытания, приемочные испытания, интеграционные тесты. Существует несколько методов разработки, таких как TDD или BDD. Таким образом, BDD касается не только приемочных испытаний. BDD может быть выполнен на уровне единичных тестов. Вот некоторые из Dan North thoughts о разнице между BDD и TDD, когда мы говорим о юнит-тестирования:

  • имена методов испытаний должны быть предложения (забросить «Test» слово прочь)
  • Специализировался на шаблон поведения предложения (старт проверка имени с «должен» или «ShouldNot»)
  • и т.д.

Существуют различные структуры BDD для различных видов испытаний. Например. SpecFlow для принятия BDD, или NSpec для уровня BDD.

Так, отвечая на ваши вопросы:

  • Если блок тесты сделаны в стиле BDD, то написание этих тестов является BDD практикой
  • Опять же, блок-тестирование может быть частью BDD, если мы не говорим о приемочных испытаниях. Имейте в виду, что модульное тестирование может быть выполнено отдельно от TDD/BDD, например. при написании тестов для существующего кода.
+2

Я думаю, что большинство модульных тестов, которые я видел, больше ориентированы на детали реализации, чем на их функциональное поведение. Эти типы тестов имеют тенденцию быть хрупкими и бесполезными. Когда тесты больше сосредотачиваются на том, что должно произойти, а не на том, как все будет сделано, в ваших модульных тестах найдется общий язык, похожий на BDD. – bryanbcook

+0

Согласен. В последние несколько лет я, как правило, пишу тесты в стиле человекочитаемой живой документации, которая не зависит от реализации. Но в начале я также использовал имена типа TestMethodFoo, которые становятся беспорядочными после простого переименования MethodFoo :) –

Смежные вопросы