【发布时间】:2017-07-03 06:03:35
【问题描述】:
快速,有没有人在 .NET 领域遇到过类似于 Ruby 的 cucumber(一种人类可读的 DSL,用于定义可以测试的用例故事)的库?
【问题讨论】:
快速,有没有人在 .NET 领域遇到过类似于 Ruby 的 cucumber(一种人类可读的 DSL,用于定义可以测试的用例故事)的库?
【问题讨论】:
您还应该查看SpecFlow,这是一个使用 .NET 进行 BDD 的开源项目。
SpecFlow 使用相同的定义格式 (Gherkin),例如 cucumber,但您可以在 .NET 中编写您的步骤定义。它基本上从您的功能文件生成单元测试类(NUnit、MsTest、xUnit 等),因此您可以使用相同的单元测试执行引擎,就像您使用真正的单元测试一样。这样也更容易将 BDD 功能测试集成到集成构建中。
在最近的版本中,SpecFlow 具有适用于 Visual Studio 2010 的语法着色功能,并支持 Silverlight 和 Mono/MonoDevelop。
【讨论】:
当然。它被称为Cucumber。在 Cucumber examples directory 和 Cucumber Wiki 上为 .NET 和 Mono 提供了如何测试 .NET 代码的示例。
【讨论】:
这个领域似乎有 3 种可能性:
使用 Cucumber 和 IronRuby。 Here's a blog 了解开始使用此功能的一些步骤。缺点似乎是性能。我读过说它是slower in general 的帐户,还有一些说它只是really slow to spin up 的帐户。不过这还远没有定论,因为 IronRuby 仍在积极开发中。
使用Cuke4Nuke。我听说过这个产品推荐了几次。它实际上使用常规的 Ruby 和 Cucumber,但通过服务器运行您的 .NET 代码。幸运的是,所有这些复杂性在您使用时都是透明的。 Cuke4Nuke 不再处于积极开发阶段。
使用SpecFlow。这是 Cucumber 的 .NET 端口。因此,它可能不具备 Cucumber 的所有功能,并且可能具有额外的功能。好处是您不必安装 Ruby。
目前尚不清楚其中哪一个是最佳选择。我个人打算从 Cuke4Nuke 开始。
【讨论】:
StoryTeller 有点相关,尽管它不是严格意义上的 BDD。它似乎支持某种不同类型的测试,但它是用 .NET 编写的。 阅读更多关于Jeremy Millers blog
【讨论】:
BDD in plain English 可以用Concordion.NET 完成。预期行为的规范是用 HTML 编写的。
任何结构的任何句子都可以用于 Concordion.NET 测试。例如,没有必要写“给定一个余额为10美元的银行账户,当发起20美元的提款时,交易失败”这样的句子。相反,可以使用任何类型的句子,例如“如果账户余额不足 10 美元,则 20 美元的交易失败”。
Concordion.NET 测试是在 NUnit 的帮助下执行的,它集成在许多不同的环境中:https://github.com/concordion/concordion-net
【讨论】:
我写了一篇博文,详细介绍了使用 IronRuby 运行 Cucumber 的过程:http://hotgazpacho.org/2009/06/cucumber-and-ironruby-it-runs/
【讨论】:
还有 StoryQ。这是一种以开发人员为中心的用户故事方法,可以报告客户。 http://storyq.codeplex.com
StoryQ 是适用于 .NET 3.5 的可移植(单个 dll)嵌入式 BDD 框架。它在您现有的测试运行程序中运行,并有助于生成人性化的测试输出(html 或文本)。 StoryQ 流畅的界面为您的 BDD 语法添加了强类型、智能感知和文档。
【讨论】:
我在http://blog.webintellix.com/2009/10/how-to-use-cucumber-with-net-and-c.html 有一篇文章展示了如何在 C# 中使用 Cucumber。IronRuby 1.0 的运行时间显着改善。
【讨论】: