При использовании спецификаций BDD в проекте .NET, зачем использовать SpecFlow * и * MSpec? - PullRequest
9 голосов
/ 11 мая 2011

Я неоднократно слышал, как энтузиасты BDD рекомендуют использовать и SpecFlow и MSpec в одном и том же проекте.

  • Очевидно, что SpecFlow больше подходит для внешних / UI-тестов.(Например, веб-тесты, которые имитируют щелчки мыши и т. Д. С использованием WatiN или чего-то подобного.)

  • Видимо, MSpec больше подходит для модульных тестов.

Теперь мой вопрос - зачем использовать две фреймворки, которые невероятно похожи и делают практически одно и то же?

Почему бы вместо этого:

  • Выбрать один BDD-фреймворк и придерживатьсяс этим.Используйте его для внешних / UI-тестов, как и предполагалось,
  • Пишите свои юнит-тесты нормально, с установленной структурой юнит-тестирования (такой как NUnit, MSTest и т. Д.)?

Я думал, что причина, по которой мы принимаем BDD, заключается в том, что мы можем тестировать поведение, которое управляется извне , с помощью интеграций тестов.

Я не вижукак / почему это относится к тестам .

Ответы [ 2 ]

4 голосов
/ 11 мая 2011

Я согласен с Дарреном.Вообще я думаю, что это частично культурно-познавательная вещь.

Если вы хотите, чтобы бизнес активно сотрудничал с исполняемой вами спецификацией, вам нужна бизнес-читабельность.Итак, вам нужен инструмент BDD, например SpecFlow.

Для модульного тестирования «бизнес» - это вы или другие разработчики в вашей команде, поэтому единственным ограничением является то, что вы должны писать свои модульные тесты таким образом, чтобычто другие разработчики могут понять это (например, это не совсем неясный код).

Так что, используете ли вы NUnit, MSpec или даже SpecFlow для модульного тестирования, следует решать исходя из того, что ваша команда чувствует себя комфортно и эффективно.Очень сложно дать конкретный совет извне.Если ваша команда свободно владеет NUnit и просто изучает BDD / SpecFlow, я бы продолжил модульное тестирование с NUnit.Если ваша команда уже пристрастилась к заданному моменту, имеет смысл попробовать несколько инструментов BDD на уровне подразделений и посмотреть, что вашей команде нравится больше всего.

Лично я был бы очень осторожен, используя инструмент на основе простого текста (внешний DSL) (например, SpecFlow) для модульного тестирования, но предпочел бы инструменты, которые используют плавные интерфейсы (внутренние DSL), такие как MSpec.Но я знаю о командах, которые успешно используют SpecFlow для модульного тестирования.

2 голосов
/ 11 мая 2011

Я не думаю, что ваш вопрос полностью обоснован, потому что MSpec и SpecFlow не невероятно похожи и не делают практически одно и то же. Достаточно взглянуть на два рядом друг с другом ... они не похожи друг на друга и работают совершенно по-разному.

Лучший совет, который я могу вам дать, это прочитать Книгу RSpec , в которой подробно показано, как проводить тестирование в Ruby с комбинацией RSpec и Cucumber. Многие идеи из этой книги могут быть применены к MSpec / SpecFlow в C # и .Net. Это лучшее объяснение процесса BDD, которое я прочитал.

...