Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 有没有BDD的成功案例?_C#_.net_Bdd_Nbehave - Fatal编程技术网

C# 有没有BDD的成功案例?

C# 有没有BDD的成功案例?,c#,.net,bdd,nbehave,C#,.net,Bdd,Nbehave,在写了一篇关于BDD的文章之后,我收到了一些人的问题,他们问我是否有大规模使用BDD的案例(特别是NBehave) 所以我的问题是社区:你有一个成功使用BDD的项目吗?如果是这样的话,你得到了什么好处,还有什么可能更好?你会再做一次BDD吗?你会推荐给其他人吗?我在一个小团队中,在一个网站上使用BDD 我们使用它的方式本质上是TDD,但测试只是使用DSL作为行为编写的。我们并没有进行大规模的行为前期设计,但我们确实创建了大量的行为,并完全按照您测试的方式使用它们 正如您可能期望的,它与TDD一样

在写了一篇关于BDD的文章之后,我收到了一些人的问题,他们问我是否有大规模使用BDD的案例(特别是NBehave)


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

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

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

正如您可能期望的,它与TDD一样有效,总体上是好的。当与客户互动时,将测试表述为行为是很好的,并且是一个相当不错的文档,但我有点希望这些行为是用英语编写的,并且测试是程序化的,而不是试图想出一些不完全符合这两个目的的复杂的中间语言

它仍然是BDD,只是没有这个可爱的把戏,试图将语言扭曲成一组随机的标点符号,而不是简单的空格,但这只是我脾气暴躁的老程序员的态度,其他人都100%满意它


该站点可用且完全可操作,因此我称之为成功:

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

  • 告诉MVC场景中的视图,从用户()接受什么样的输入

  • 告诉服务层异常处理行为(注入到装饰器中):

    var policy=ActionPolicy
    .Handle()
    .重试(3);
    

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

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


    顺便说一句,这不是一个令人眼花缭乱的UI项目。这是一个将数据从web服务同步到数据库的集成项目。因此,它表明GWT甚至可以用于非“眼球”UI。

    我已经在几个项目上使用了上下文规范样式(使用MSpec),并取得了巨大成功。我仍在努力理解场景风格的真正好处。我越是使用上下文规范风格,我就越喜欢它,我的应用程序感觉就越紧。

    我同意你“脾气暴躁的老程序员的态度”。有额外的抽象级别来摆脱名称we通常是giveToFunctions(),这只是一项很大的工作,而且从封装的角度来看,Gerkin语言也不太好。。。
    result = view.GetData(
      CustomerIs.Valid, 
      CustomerIs.From(AddressIs.Valid, AddressIs.In(Country.Russia)));
    
    var policy = ActionPolicy
      .Handle<WebException>()
      .Retry(3);