【问题标题】:What's the best BDD framework for working with ASP.NET MVC 2 + C# 4?使用 ASP.NET MVC 2 + C# 4 的最佳 BDD 框架是什么?
【发布时间】:2010-12-29 22:42:55
【问题描述】:

我是在看Scott Guthrie in Sweden 的视频时才听说 BDD 的。一位听众向 Scott 提问 VS2010 和 ASP.NET MVC 如何支持 BDD。

之后,我搜索了BDD (Behavior Driven Development),与TDD (Test Driven Development) 相比,它更注重规范而不是单元测试。我发现了一些适用于 Ruby 和 Java 的框架。但我没有任何著名的 .NET 框架。

请向我推荐 BDD 框架并总结它的优点/缺点。

PS。建议的 BDD 框架必须在 .NET 4、C# 4.0 和 ASP.NET MVC 2 上运行良好。

谢谢,

【问题讨论】:

    标签: asp.net-mvc-2 .net-4.0 c#-4.0 bdd


    【解决方案1】:

    我看到这个问题已经有了答案,我还没有尝试过 NBehave。但是,我们在这个相当大的企业项目中使用MSpec (Machine.Specifications),它在这里对我们来说工作得很好。非常值得一提。

    Rob Conery 制作了一个关于学习 BDD 的优秀视频,其中他逐行使用 MSpec: (链接已删除,不再可用,但搜索它)

    更多关于 Rob Conery 的 MSpec 以及他使用它的原因。
    http://wekeroad.com/2009/09/21/make-bdd-your-bff-2/您可能还想查看他标记为 BDD 的其他帖子。

    优点:

    • 允许快速“存根”整个故事、场景、上下文和规范 - 无需任何实际代码。让您专注于整体“行为”,这是 BDD! 的目的,无需担心代码和编译。
    • 生成优秀的 HTML 报告,在存根规范旁边带有“
    • TestDriven.NET 运行器包含在 MSpec 中,使用新的 tdnet 链接(无需设置!)。
    • [Behaviors] 属性及其 Behaves_like 委托类型使将现有规范从一个场景复制到另一个场景变得轻而易举。

    缺点:

    • 即使不需要太多文档,也几乎没有文档(观看上面的视频)。作者最近在博客上寻求有关记录的帮助。
    • 还是新的,只是作者的一个副项目(不是他的主要工作)。但是,在这篇文章中它非常活跃。

    希望对您有所帮助。

    【讨论】:

    • 我还应该补充一点,在 MSpec 0.3 中,现在有一个 ReSharper 测试运行器。
    【解决方案2】:

    我建议尝试SpecFlow 奇怪的是没有人提到它。这里有一篇关于using BDD with Specflow and Asp.Net MVC 的好文章是open source and is hosted on GitHub

    规范流程使用我个人非常喜欢的 GWT(Given When Then)语法。到目前为止,我们在 BDD 方面取得了巨大的成功,现在尝试使用 SpecFlow 来实现。现在还处于早期阶段,但到目前为止一切顺利。

    优点:

    1. 通过一个不错的插件集成到 VS2008 和 VS2010
    2. 使用流行的 Given When Then 词汇
    3. 使用标准 NUnit 测试运行器
    4. 功能文件让您可以简单地粘贴来自业务分析师的场景

    缺点:

    1. 后面的功能代码有点丑,但没什么不好
    2. 据我所知,报告格式相当有限(我只使用 NUnit)

    我鼓励你试一试。

    【讨论】:

      【解决方案3】:

      在确定您不需要太多框架后,我构建了 StoryQ。它非常轻量级,可嵌入到您现有的测试运行器中,请访问http://storyq.codeplex.com

      【讨论】:

      • 总是很高兴看到有人创建自己的 BDD 框架! +1 一个 OT 评论:在 StoryQ 主页上的示例中,您展示了嵌入式类。 ReSharper 的单元测试(从 4.5 开始)不支持嵌入式类。您最好删除 DemoTest 类包装器,并改用更精细的命名空间。
      • @eduncan911 是的,还有一个 ;)。嘿,我不确定你的意思是“嵌入式类”,层次结构是:命名空间 StoryQ.Demo/class DemoTest/method PassingExample...
      • 哦,你是对的。没有嵌入那里。 :) 抱歉,下午很忙。
      • 我已经在几个项目中使用了 StoryQ。调用你的框架 FluentBDD 怎么样 :)
      【解决方案4】:

      你看过NBehave吗?您可能还想查看this old question。但我还想补充一点,恕我直言,可以使用任何类型的单元测试框架进行 BDD。一个简单直接的方法是将您的“测试类”命名为“Given_X”,然后让所有“测试方法”具有类似“It_should_Y”的名称。

      【讨论】:

      • @james 您可能会喜欢storyq.codeplex.com,因为它是一个非常小的框架,基本上可以为您提供来自正常单元测试的 BDD 样式报告。
      【解决方案5】:

      大魔王

      重量很轻http://code.google.com/p/storevil/

      【讨论】:

        【解决方案6】:

        你知道 Goiko Adzic 关于如何使用 Concordion.NET 以简单的英语进行 BDD 的视频吗?

        http://gojko.net/2009/09/01/acceptance-testing-in-plain-english-with-concordion-net/

        【讨论】:

          【解决方案7】:

          试试这个:https://www.nuget.org/packages/Heleonix.Testing.NUnit 它适用于 NUnit,但在 Given/When/Then 和 Arrange/Act/Assert 样式中提供 JavaScript 中的 Jasmine 或 Jest 等语法

          【讨论】:

            猜你喜欢
            • 2010-11-25
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-08-01
            • 2012-03-05
            • 2012-09-24
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多