2010-07-31 2 views
2

Я новичок в BDD и использую SpecFlow. Я пытаюсь разработать эффективную, организованную и поддерживаемую методологию (для использования в ASP.NET MVC). Основные направления мне нужно улучшить, являются:SpecFlow/BDD с ASP.NET MVC

  • Группировки шагов (в шаге файлы)

  • реиспользования тестовых объектов (например, это так легко в модульных тестах, унаследовав базовые классы тестов и т.д.)

  • структура папок

, когда речь идет о группировке, давайте рассмотрим типичный сценарий CRUD. Например:

  • папку для каждой «зоны» в моем проекте, например, общественности, управления сайтом

  • папка функция и шаг папки внутри каждой из этих

А потом, внутри этих папок у меня есть один файл Feature, охватывающий весь опыт CRUD для определенного объекта, например NewsItem. Я пошел так, чтобы я мог повторно использовать объекты и NewsController в моих шагах.

Но это означает, что файлы шагов получают довольно большое покрытие всех типов допустимых, недопустимых возможностей ввода, и очень сложно следовать одному сценарию на всем протяжении пути. Но если я этого не сделаю, я не могу повторно использовать шаги, которые могут быть применимы к нескольким сценариям во всем процессе CRUD.

Я понимаю, что это очень субъективно, и я не боюсь быть перегружены множеством различных идей и точек зрения - это то, что я хочу: P

Как и ваши собственные мнения & предпочтения, ссылки на блоги и книги были бы хорошими.

Благодаря

Ник

ответ

3

К сожалению никто еще не ответил на этот вопрос в течение веков. Если это по-прежнему полезно для вас, это может помочь.

Я держу свои шаги на очень высоком уровне: см этот вопрос Imperative and declarative steps in Rspec

шаги I группы по проблемным областям. Представьте, что вы вошли в систему и выполнили некоторые действия, а затем снова вышли из системы. Или, может быть, отправимся домой на день. Все, что я могу сделать за один сеанс, становится одной из проблем. Например, если я владелец магазина домашних животных, у меня могут быть файлы шагов для: обработки домашних животных на складе, обработки аксессуаров и других акций, продажи предметов, отслеживания прибыли и т. Д.

У меня также есть парадигма экрана/страницы как WebDriver. Это означает, что если шаг на самом деле выполняет несколько действий в пользовательском интерфейсе, есть один экран или страница, которая обрабатывает все эти действия.

Я часто использую каскадные конструкторы, чтобы разрешить использование моей проводки BDD (в моем случае, простой старый NUnit) для создания этих шагов и сценариев для меня.Я пишу немного инструмент автоматизации, и вы можете увидеть некоторые из этих методов в своих примерах:

http://code.google.com/p/wipflash/source/browse/Example.PetShop.Scenarios/PetRegistrationAndPurchase.cs

я не бездельничал много с SpecFlow еще, но я думаю, это может быть полезно для вас , Это тот же шаблон дизайна, который я также использовал с JBehave или Fitnesse.NET и FitSharp.

Удачи вам! Есть группа BDD http://groups.google.com/group/behaviordrivendevelopment, которая может помочь вам, если вам нужна дополнительная информация.