上次我在2009年底找了一个框架,现在我想使用BDD,我发现.NET中有大约7个BDD框架,我想知道是否根据某人的经验,哪一个是最成熟的?
答案 0 :(得分:8)
SpecFlow正在成为更好的.NET BDD工具之一,这是真的,而且MSpec在单元级别上表现不错,但考虑到观众的非技术性,我没有找到比NUnit更多的好处。
但说真的,BDD与工具无关。如果您想要开始使用,请首先关注场景周围的对话。这就是BDD取得巨大成功的地方 - 当对话开始产生理解时,会有更多关于如何解决问题并提供项目真正价值的想法。如果您的业务利益相关者希望基于这些对话更多地参与,那么这是开始使用英语BDD工具的一个很好的点。否则,要认识到这些工具引入了另一层抽象,以及重构英语的难度,确定了哪些步骤不再使用等等.BDD工具为场景自动化引入了另一层复杂性,这已经很棘手了。
如果您只是想了解更多关于BDD框架如何挂起的信息,而不是在企业项目中使用它们,那就去吧。
作为替代方案,您可以在一个小的自定义DSL中捕获场景,并在普通的旧NUnit中执行您需要的所有操作。我是最初的JBehave开发者之一,如果没有充分的理由和充足的利益相关者参与,我仍然不会自动跳到JBehave。以后很容易转移到英语BDD工具(如果!)它将成为最有用的事情。
答案 1 :(得分:3)
我不是100%确定你在寻找什么,但SpecFlow是我见过的更好的BDD框架之一。代码做得很好,并且围绕开发工作有很多活动。
答案 2 :(得分:2)
我非常同意Lunivore关于在准备好之前停止转向BDD工具的评论。它与我的经历产生共鸣。虽然这些工具很重要,但有时它可能会妨碍工具。如果不采用任何框架,您可以从BDD获得很多。
我在这里写下了自己的想法:
http://neelnarayan.blogspot.com/2011/04/bdd-is-not-about-tools.html
答案 3 :(得分:1)
我认为SpecFlow很棒 - 但对我来说它在BDD过程中留下了一个漏洞 - 单元测试。
所以现在我正在寻找“Total BDD”解决方案,并计划将MSpec用于“单元测试”(阅读上下文规范)。
首先,MSpec看起来有点奇怪,但不需要很长时间就习惯了。
答案 4 :(得分:1)
我还没有真正使用过specflow,但我的印象是QUITE有一些开销!你需要三次短语。在spec文件中,作为要解析的正则表达式,以及与解析的行名称略有相同的方法。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) { ... }
答案 5 :(得分:0)
Concordion.NET是一个很好的小框架,支持BDD in plain English。由于它基于html,它可以使用Web的表现力从客户的角度描述软件产品。它不依赖于模式匹配,而是使用small set of commands(例如" set","执行"," assertEquals")来转换具体示例将html文档转换为自动验收测试。因此它非常适合Specification by Example。