5

写了一篇关于 BDD 的小文章后,有人问我是否存在大规模使用 BDD(特别是 NBehave)的案例。

所以我的问题是向社区提问:你们有成功使用 BDD 的项目吗?如果是这样,你得到了什么好处,还有什么可以更好的?你会再做一次BDD吗?你会推荐给其他人吗?

4

4 回答 4

4

我们在不同场景(开源和 ND 项目)的代码级别使用了一些 BDD。

  1. 在 MVC 场景中告诉视图,从用户那里接受什么样的输入(DDD 和 .NET 中的规则驱动 UI 验证

    result = view.GetData(
      CustomerIs.Valid, 
      CustomerIs.From(AddressIs.Valid, AddressIs.In(Country.Russia)));
    
  2. 告诉服务层异常处理行为(ActionPolicy被注入到装饰器中):

    var policy = ActionPolicy
      .Handle<WebException>()
      .Retry(3);
    

使用这些方法极大地减少了代码重复,使代码库更加稳定和灵活。此外,由于对复杂细节的逻辑封装,它使一切变得更加简单。

于 2009-02-05T09:31:06.773 回答
3

我在一个在网站上使用 BDD 的小团队中。

我们使用它的方式本质上是 TDD,但测试只是使用 DSL 编写为行为。我们没有进行大型行为的前期设计,但我们确实创建了大量的行为,并完全按照您的测试使用它们。

如您所料,它的工作原理与 TDD 差不多,总体上还不错。在与客户互动时将测试表述为行为很好,并制作了一个相当不错的文档,但我有点希望这些行为是用英语编写的,并且测试是经过编程的,而不是试图提出一些困难的中间语言完美契合任何一个目的。

它仍然是 BDD,只是没有这种试图将语言扭曲成由 random_looking.set of_Punctuation 而不是 simple.spaces 描绘的语言的可爱技巧,但这只是我脾气暴躁的老程序员的态度,其他人都是 100% 开心的用它。

该站点可用并且完全可以运行,所以我认为它是成功的:看看

于 2009-01-30T23:22:28.223 回答
1

我最近在一个高级需求文档中使用了 GWT 的 BDD 样式。我没有从客户那里得到任何关于 GWT 的反馈,我的老板说他喜欢它,因为它非常清晰易懂。请注意,他不了解我所知道的 BDD。我没有加入用户故事,因为对于具有传统瀑布背景的人来说,这可能有点过于空灵。也许下次我会尝试加入用户故事。

顺便说一句,这不是一个眼球 UI 项目。这是一个将 Web 服务中的数据同步到数据库的集成项目。因此它表明 GWT 甚至适用于非“眼球”用户界面。

于 2009-02-27T07:30:37.340 回答
0

我一直在几个项目(使用 MSpec)上使用 Context-Specification 风格并取得了巨大的成功。我仍在尝试了解 Scenario 风格的真正好处。我使用上下文规范样式的次数越多,我就越喜欢它,并且我的应用程序感觉越紧凑。

于 2009-08-23T05:00:22.853 回答