在.NET 2.0中实现BDD / TDD的最佳方式是什么?

我正在寻找将测试套件添加到我的应用程序中,但是我无法移动到.NET 3.5的较新测试框架。

有没有人有关于使用良好测试框架的建议?

0
额外 编辑
意见: 2
等等,它会打开 word ?你的意思是Microsoft Word吗?这听起来很奇怪!
额外 作者 Torben Gundtofte-Bruun,

11 答案

  1. Connect your phone to the computer.
  2. In Windows, click Start > Settings > Control Panel > Scanners and Cameras.
  3. Right-click on "Apple iPhone" > Properties.
  4. Click the tab "Events".
  5. Click the radio button "Take no action". Then OK.

现在当你连接手机时,什么都不应该发生。

3
额外

NUnit始终是我的最爱。但是,如果您使用TFS作为源代码控制,我建议您坚持使用Microsoft堆栈。

0
额外

我们使用 MbUnitRihno Mocks 和他们证明在一起工作得很好。在进行TDD时,你几乎肯定需要做某种形式的依赖注入,而这可以手动完成,它的价值在于看一个IoC容器,比如温莎城堡

It well worth looking at John Paul Bodhood's screen casts to get you started. JPB's Blog

0
额外

NUnit is available at http://www.nunit.org I would suggest this even when working on the MS stack - the support for non-MS frameworks is happening in the MVC previews which shows a definite movement in the right direction to allow us all to customise our stacks to fit.

0
额外

对于模拟对象库,我发现BSD许可的 Rhino.Mocks 相当令人愉快。

0
额外

我也使用 NUnit 取得了巨大成功。

当需要为模拟对象产生时,我也使用了 NMock 。作为额外的好处,用于创建您的模拟对象的工厂被称为Mockery。

为了促进单元测试的运行,我使用了 TestDriven.NET 来运行单元测试。此外,我使用 Cruise Control .NET 来观察SVN并检查每个新提交是否构建并通过所有单元试验。

0
额外
NMock过度使用魔法字符串使其成为嘲讽框架的不好选择。 RhinoMocks或Moq是更好的选择,因为它们依赖于强大的打字。
额外 作者 Ben Scheirman,

Check out Rob Conery's screencast on BDD using MSpec. Very impressive http://blog.wekeroad.com/mvc-storefront/kona-3/

edit: I now use this approach: http://10printhello.com/the-one-bdd-framework-to-rule-them/

0
额外

我将不得不大声呼吁起订量的。这是一个干净轻松的嘲讽框架,可以帮助您引导您进入成功的窖域。

TFS内置的测试工具没问题,他们可以完成工作,但通常可能有点繁琐。生成的报告,代码覆盖率和一些其他部分特别糟糕,它们让你在22岁而不是50岁时秃头。

如果您真的喜欢测试,请考虑尝试一些持续集成。你会很快感受到退化带来的痛苦,并有可能帮助你更快地达到最终目标。

如果你有时间,不管你尝试了几个,看看哪一个是最自然的。祝你好运,快乐的编码。

0
额外
不一定是一件可怕的事情,但你是对的,这将阻碍v2.0的商店。
额外 作者 smaclell,
Moq的问题在于它需要.NET 3.5,因为它使用lambda表达式和表达式树。
额外 作者 Michaël Larouche,

对于我的项目,我使用NUnit和TestDriven.NET取得了巨大的成功。您可以创建一个单独的库来托管测试代码,也可以将其放入可执行文件或库中。这一切都取决于你是否希望你的生产代码与你的测试代码交织在一起。

对于依赖注入,我在当前的项目中使用 NInject ,其工作非常好。如果您使用构造函数注入,则不需要使用[Inject]属性混淆您的代码。

I haven't used a mock library for my .NET 2.0 project but for another .NET 3.5 project I will use Moq

请注意,所有这些都适用于.NET 2.0及更高版本。 (Moq除外)

0
额外

这可能是已经说过的内容的总结,但对于TDD,我个人使用Rhino Mocks和MBUnit。 Rhino Mocks是一款免费且开源的嘲讽框架。 Rhino Mocks的优势在于我们不需要像在NMock中那样使用魔术串来设置您的期望。

我喜欢MBUnit,因为MbUnit具有RowTests的概念,它允许你改变你的测试方法的输入。 MBUnit也免费提供。

您还希望确保您的单元测试框架为您的配置选项(持续集成服务器)提供支持。在Cruise Control.NET中默认支持Nunit,并且您需要做一些额外的工作才能让MBUnit在ccnet中工作。

从IDE的角度来看,您必须拥有TestDriven.NET。 TestDriven.NET允许您右键单击并在IDE中运行测试,并支持MBUnit和Nunit等。

NBehave是我用过的BDD库。我没有使用任何其他的东西,所以我无法与你比较,但NBehave得到了MBUnit团队的Gallio的支持,这意味着你可以像使用TestDriven.NET进行单元测试一样运行BDD测试。

我也强烈推荐Resharper。使用此重构和指导工具,您会发现生产力显着提高。它将帮助您在开发测试时更改代码。

希望这可以帮助

0
额外

在TFS中使用nUnit并不难。甚至有一个codeplex项目可以实现这一点: NUnit for Team Build ,甚至可以将结果“发布”到仓库。

我还没有尝试过 - 但我会建议那些有兴趣实现TFS以继续使用nUnit而不是尝试转换所有它们的nUnit的大型投资(或者对MSTest工具有强烈偏好的客户)的客户现有的测试。

0
额外