在.NET项目中使用BDD规范时,为什么要同时使用SpecFlow*和*MSpec?

Jon*_*han 9 .net c# bdd unit-testing

我反复听到使用BDD爱好者主张在同一个项目SpecFlow和MSpec.

  • 显然,SpecFlow更适合于进行外部/ UI测试.(例如,使用WatiN或类似东西模拟鼠标点击等的网络测试.)

  • 显然MSpec更适合单元测试.

现在我的问题是 - 为什么要使用两个非常相似且几乎完全相同的框架?

为什么不呢:

  • 选择一个BDD框架并坚持下去.按照预期,将其用于进行外部/ UI测试
  • 使用已建立的单元测试框架(例如NUnit,MSTest等)正常编写单元测试?

我认为我们采用BDD的原因是我们可以通过集成测试来测试外部驱动的行为.

我不知道这是如何/为什么这适用于单元测试.

Dar*_*ren 2

我认为你的问题并不完全有效,因为 MSpec 和 SpecFlow 并不是非常相似,而且实际上并没有做相同的事情。只要看看两者并排...它们看起来毫无相似之处,而且它们的工作方式也完全不同。

我能给你的最好建议是阅读The RSpec Book,它详细展示了如何结合 RSpec 和 Cucumber 在 Ruby 中进行测试。本书中的许多想法都可以应用于 C# 和 .Net 中的 MSpec/SpecFlow。这是我读过的对 BDD 流程的最好解释。