Лично я использую SpecFlow для создания специфических тестов (т. Е. «Пользователь создает новую запись компании»), где я иногда (но не всегда) использую Watin. Для тестирования своих репозиториев или классов обслуживания я буду использовать модульные / интеграционные тесты с NUnit. Интеграционные тесты предназначены для тех случаев, когда мне нужно общаться с базой данных во время теста, а для тех случаев, когда я просто запускаю код в тестируемом целевом объекте без внешних взаимодействий.
Я бы сказал, что вам не нужно использовать BDD-фреймворк для тестов без пользовательского интерфейса. Вы можете, если хотите, но здесь нет строгих правил. Если вы собираетесь это сделать, тогда я настоятельно рекомендую создать более одного проекта для ваших тестов. Хорошая идея - разделять их на части, а не смешивать все тесты в одном проекте. Вы могли бы назвать их:
MyProject.Tests.Features <- для BDD
Тесты SpecFlow. </p>
MyProject.Tests.Integration <- Для
тесты, которые получают доступ к
внешний ресурс, т.е. база данных. </p>
MyProject.Tests.Unit
Если вы не хотите использовать две инфраструктуры BDD, вы все равно можете использовать MSTest / NUnit в режиме BDD. Например, эта статья блога описывает хорошее соглашение об именах, которое близко к BDD, но нацелено на модульные тесты MSTest / NUnit. Вы можете использовать это для ваших тестов не SpecFlow, когда вы тестируете такие вещи, как репозитории.
Итак, вам не нужно использовать SpecFlow и MSpec при тестировании, но если вы это сделаете, то я рекомендую отдельные тестовые проекты.