在BDD上写了一个small article后,我从人们那里得到了一些问题,询问是否有任何大规模使用BDD的案例(特别是NBehave)。
所以我的问题是社区:你有一个成功使用BDD的项目吗?如果是这样,你获得了什么好处,哪些更好?你会再做BDD吗?你会推荐给其他人吗?
答案 0 :(得分:4)
我们在不同场景(开源和ND项目)的代码级别使用了一些BDD。
在MVC场景中讲述视图,用户接受哪种输入(DDD and Rule driven UI Validation in .NET)
result = view.GetData(
CustomerIs.Valid,
CustomerIs.From(AddressIs.Valid, AddressIs.In(Country.Russia)));
告诉服务层,关于异常处理行为(ActionPolicy注入装饰器):
var policy = ActionPolicy
.Handle<WebException>()
.Retry(3);
使用这些方法极大地减少了代码重复,使代码库更加稳定和灵活。此外,由于复杂细节的逻辑封装,它使一切变得更加简单。
答案 1 :(得分:2)
我参加了一个在网站上使用BDD的小团队。
我们使用它的方式基本上是TDD,但测试只是使用DSL编写为行为。我们没有进入大型的前期设计行为,但我们确实创建了大量的行为,并且完全按照您的测试方式使用它们。
正如您所料,它与TDD一样,通常很好。将测试描述为行为很好,当与客户进行交互并制作相当不错的文档时,我有点希望这些行为是用英语编写的,并且测试编程而不是试图提出一些不困难的中间语言适合任何目的。
它仍然是BDD,只是没有这种可爱的伎俩,试图将语言扭曲成一个由random_looking.set of_Punctuation而不是simple_spaces描述的语言,但这只是我脾气暴躁的程序员态度,其他人都是100%满意。
该网站已经可用且完全正常运行,所以我称之为成功:Have a look
答案 2 :(得分:1)
我最近在高级需求文档中使用了GWD的BDD风格。我没有从客户那里得到任何有关GWT的反馈购买我的老板说他喜欢它,因为它非常清晰易懂。请注意,他不了解我所知道的BDD。我没有插入用户故事,因为对于拥有传统瀑布背景的人来说,这可能有点过于通风。也许下次我会尝试输入用户故事。
顺便说一句,这不是一个眼球UI项目。这是一个集成项目,将Web服务中的数据同步到数据库中。因此,它表明GWT甚至适用于非“眼球”UI。
答案 3 :(得分:0)
我一直在几个项目上使用Context-Specification样式(使用MSpec)并取得了巨大的成功。我仍然试图了解Scenario风格的真正好处。我使用上下文规范的风格越多,我就越喜欢它,我的应用程序感觉越紧。