Зрелая среда BDD (Behavior Driven Development) для .net и c # - PullRequest
12 голосов
/ 07 января 2011

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

Ответы [ 6 ]

8 голосов
/ 11 января 2011

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

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

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

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

3 голосов
/ 07 января 2011

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

2 голосов
/ 21 апреля 2011

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

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

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

1 голос
/ 06 апреля 2012

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

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

Given I have a savings account with $100

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

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

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

public void Given_I_Have_A_accountType_Account_with_amount(string accountType, decimal amount) { ... }
1 голос
/ 11 января 2011

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

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

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

0 голосов
/ 10 января 2015

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

...