Подтвердить что ты не робот

Зрелая структура BDD (управляемая поведением) для .net и С#

В прошлый раз, когда я искал фреймворк, я был в конце 2009 года, теперь я хочу использовать BDD, и я выясню, что в .NET существует около 7 фреймворков для BDD. Мне было интересно, основывается ли кто-то на опыте, какой из них является наиболее зрелым?

4b9b3361

Ответ 1

SpecFlow становится одним из лучших инструментов .NET BDD, это правда, и MSpec отлично работает на уровне единицы, хотя я не нашел много преимуществ по сравнению с NUnit, учитывая нетехнический характер аудитории.

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

Если вы просто хотите узнать больше о том, как фреймворки BDD объединяются вместе, а не использовать их в корпоративном проекте, перейдите к нему.

В качестве альтернативы вы можете записывать сценарии в небольшой пользовательский DSL и делать все, что вам нужно, в простой старой NUnit. Я один из первоначальных разработчиков JBehave, и я до сих пор не буду автоматически переходить на JBehave без веских оснований и большого участия заинтересованных сторон. Легко перейти к инструментам BDD на английском языке позже (если!), Это станет самой полезной задачей.

Ответ 2

Я не уверен на 100%, что вы ищете, но SpecFlow - одна из лучших фреймворков BDD, которые я видел. Код очень хорошо сделан, и он имеет большую активность, связанную с усилиями разработчиков.

Ответ 3

Я полностью согласен с комментарием Lunivore о том, чтобы отказаться от перехода на инструменты BDD, пока вы не будете готовы. Это резонирует с моим опытом. Хотя инструменты важны, иногда это может мешать. И там вы можете выиграть от BDD без принятия каких-либо фреймворков.

Я написал свои мысли здесь:

http://neelnarayan.blogspot.com/2011/04/bdd-is-not-about-tools.html

Ответ 4

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

Итак, теперь я ищу решение "Total BDD" и планирую использовать MSpec для "модульных тестов" (чтение спецификаций контекста).

Вначале MSpec может выглядеть немного странно, но использовать его не займет много времени.

Ответ 5

Я действительно не использовал specflow, но мое впечатление в том, что QUIT некоторые накладные расходы! Вам нужно все три фразы. В спецификационном файле, как регулярное выражение, и метод с тем же именем, что и синтаксическая строка. https://github.com/davidmfoley/storevil/wiki кажется МНОГО БОЛЬШЕ скудных

Например, чтобы соответствовать следующему:

Given I have a savings account with $100

В SpecFlow и аналогично в Cucumber (игнорируя языковые различия между С# и Ruby), вы должны написать что-то вроде этого:

[Given(@"I have a (\w+) account with $(.*)")]
public void GivenIHaveAccount(string type, decimal amount) { ... }

В StorEvil вы можете использовать аналогичный синтаксис выше, OR, вы можете записать его следующим образом:

public void Given_I_Have_A_accountType_Account_with_amount(string accountType, decimal amount) { ... }

Ответ 6

Concordion.NET - это хорошая небольшая структура, которая позволяет BDD на равнине английский. Поскольку он основан на html, он может использовать выразительность Интернета для описания программного продукта с точки зрения клиента. Он не полагается на сопоставление шаблонов, но использует небольшой набор команд (например, "set", "execute", "assertEquals" ), чтобы включить конкретные примеры в html-документах в автоматизированные приемочные испытания. Таким образом, он хорошо подходит для Спецификация по примеру.