26

我希望在我的应用程序中添加一个测试套件,但是我无法迁移到 .NET 3.5 的更新测试框架。

有人对使用好的测试框架有什么建议吗?

4

12 回答 12

9

我们使用MbUnitRihno Mocks,它们被证明可以很好地协同工作。在进行 TDD 时,您几乎肯定需要进行某种形式的依赖注入,虽然这可以手动完成,但值得一看 IoC 容器,例如Castle Windsor

非常值得看一下 John Paul Bodhood 的屏幕截图以帮助您入门。JPB 的博客

于 2008-08-06T14:16:35.790 回答
9

NUnit 和 Rhino 非常适合,自动模拟容器可能会很有趣。

如果您也在寻找 BDD,那么NBehave可能是一个不错的选择。但是,如果您只是指与单元测试(xSpec)相关的 BDD 风格,尽管您可以通过添加框架(尽管specunit之类的东西确实添加了一些语法糖),但您可能想看看MSpec也很有趣。

于 2008-09-12T10:02:36.487 回答
7

查看 Rob Conery 在 BDD 上使用 MSpec 的截屏视频。非常令人印象深刻http://blog.wekeroad.com/mvc-storefront/kona-3/

编辑:我现在使用这种方法:http: //10printhello.com/the-one-bdd-framework-to-rule-them/

于 2009-06-17T12:27:08.960 回答
4

对于 Mock Object 库,我发现 BSD 许可的Rhino.Mocks相当令人愉悦。

于 2008-08-05T12:54:20.620 回答
4

我在使用NUnit方面也取得了巨大的成功。

当需要模拟对象时,我也使用过NMock 。作为额外的奖励,用于创建模拟对象的工厂称为 Mockery。

为了便于单元测试的运行,我在编写代码时使用了TestDriven.NET来运行单元测试。此外,我使用Cruise Control .NET来观察 SVN 并检查每个新提交是否构建并通过所有单元测试。

于 2008-08-06T14:06:19.540 回答
4

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

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

您还希望确保您为单元测试框架选择的任何内容都得到 CI(持续集成服务器)的支持。Cruise Control.NET 默认支持 Nunit,您必须做一些额外的工作才能让 MBUnit 在 ccnet 中工作。

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

NBehave 是我用过的 BDD 库。我没有使用过其他任何产品,因此无法与您进行比较和对比,但是 MBUnit 团队的 Gallio 支持 NBehave,这意味着您可以像使用 TestDriven.NET 进行单元测试一样运行 BDD 测试。

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

希望这可以帮助

于 2008-10-10T18:06:47.480 回答
3

NUnit可在http://www.nunit.org获得, 即使在 MS 堆栈上工作时,我也建议这样做 - MVC 预览中正在发生对非 MS 框架的支持,这显示了朝着正确方向的明确运动,以允许我们一切都是为了定制我们的堆栈以适应。

于 2008-08-05T13:03:45.080 回答
3

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

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

于 2008-09-07T12:58:49.990 回答
3

我必须为起订量大喊大叫。它是一个简洁的轻量级模拟框架,可引导您进入成功的深渊。

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

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

不管你做什么,如果你有时间,尝试一些,看看哪一个是最自然的。祝你好运,编码愉快。

于 2008-09-27T04:28:28.860 回答
2

NUnit 一直是我的最爱。但是,如果您使用 TFS 作为源代码控制,我建议您坚持使用 Microsoft Stack。

于 2008-08-05T12:51:47.990 回答
2

我推荐以下内容:

TestDriven.NET - VS 的单元测试插件,与所有主要单元测试框架(包括 NUnit、MbUnit 等)完全集成......

Typemock Isolator - .Net 单元测试的模拟框架

NUnit - C# 中的开源单元测试框架。

于 2008-10-15T14:24:18.690 回答
2

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

对于依赖注入,我在当前项目中使用NInject并且效果很好。如果您使用构造函数注入,则无需使用 [Inject] 属性使代码混乱。

我没有为我的 .NET 2.0 项目使用模拟库,但对于另一个 .NET 3.5 项目,我将使用Moq

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

于 2009-06-17T12:48:36.297 回答