【问题标题】:.NET unit testing packages [closed].NET 单元测试包
【发布时间】:2010-09-05 07:56:24
【问题描述】:

在几年没有全职使用 .NET 之后,我正在重新开始使用它,并且想知道这些天好的单元测试包是什么。

我对 NUnit 很熟悉(几年前),并且曾短暂地使用过 IronRuby,目标是让 RSpec 之类的东西继续运行,但除此之外我知道的不多。

我意识到我可以为此在谷歌上搜索并收工,但我相信在这里提出问题可能会得到更好、更明智的回应 :-)

建议?

【问题讨论】:

    标签: c# .net unit-testing testing


    【解决方案1】:

    有太多太疯狂了。我猜是疯了。

    • 对于保守的类型(我),NUnit 仍然可用,而且功能仍然强大。
    • 对于 Microsoft 类型,MSTest 就足够了,但与 NUnit 相比它又慢又笨重。它还缺乏代码覆盖率,而无需为昂贵的 Visual Studio 版本支付大笔费用。
    • 还有MbUnit。它与 NUnit 类似,但具有 RowTest(使用不同的参数运行相同的测试)和 Rollback(将数据库恢复为测试后找到的数据库)等漂亮特性。
    • 最后,xUnit.net 是带有某种态度的时尚选择。
    • 哦,TestDriven.NET 将为您提供 NUnit 和 MbUnit 的 IDE 集成。

    我相信他们都很好。不过,我会避开 MSTest,除非您只是享受在一个开箱即用的 IDE 中拥有一切的便利。

    Scott Hanselman 有一个关于这个主题的播客。

    【讨论】:

    • +1,注意 NUnit 2.5 具有不错的 RowTest 功能,以及参数的组合测试等。
    • 如果你问我,MSTest 和 NUnit 之间的区别并没有那么大。它主要归结为首选语法,如果您使用也支持 MSTest 的 TesteDriven.Net,性能几乎相同。
    • 是的,NUnit 2.5 通过 [TestCase] 属性具有 RowTest 功能。
    【解决方案2】:

    坚持使用 NUnit。不要去 MSTest 附近的任何地方。

    使用 NUnit + ReSharper 绝对是一种乐趣。

    【讨论】:

    • 为什么要远离 MSTest?如果您真的愿意分享您为什么要远离它,我将不胜感激。 R# 也适用于 MSTest(使用 Gallio 插件)。
    • 您好,Kjetil。主要是三个原因。 1. MS 测试创建的元数据。为什么?像 NUnit 一样反射。 2. 测试运行器很可怕。 3. NUnit 做得更好——为什么要改变。我做了一段时间,但后来又改回来了。
    • 我还遇到了 MS 测试“跑步者”的各种错误。基本上 VS 让它在后台运行,在某些情况下,你 10 分钟前运行的测试可能会干扰你现在要运行的测试:-(
    • 注意:从 VS2017/dotnetcore 开始,微软已经重写了所有的 MSTest 东西。现在有一个 MSTestV2 并且运行器/模型与您对 NUnit 和其他类似事物的期望非常相似,所以我认为 MSTest 现在是一个更可行的选择
    • 有意思,我去看看。我的答案现在已有十多年的历史了,因此可能不如以前准确。 :-)
    【解决方案3】:

    我们在这里使用 NUnit 和 MbUnit。我们使用 TestDriven.NET 在 Visual Studio 中运行单元测试。我们使用优秀的、强烈推荐的 RhinoMocks 作为模拟框架。

    【讨论】:

    • RhinoMocks 链接(实际上)已损坏。它重定向到一个通用页面。
    【解决方案4】:

    我以前使用 NUnit,但现在倾向于使用 MbUnit,主要有两个特点: 1. RowTest 功能允许您轻松地对不同的参数集运行相同的测试,如果您真的想要全面覆盖,这一点很重要。 2. 回滚功能允许您对数据库运行测试,同时在每次测试后回滚更改,使您的数据库每次都保持完全相同的状态。而且就像添加 [Rollback] 属性一样简单。

    MbUnit 的另一个优点是它的语法几乎与 NUnit 相同,因此如果您在 NUnit 下已经有一个完整的测试平台,您可以直接切换引用而不需要更改任何(非常?)代码。

    【讨论】:

      【解决方案5】:

      xUnit.net 看起来它为 NUnit、MbUnit 和 MSTest 提供了一种稍微不同的方法,这很有趣。

      在寻找类似 RSpec 的解决方案时(因为我喜欢 RSpec),我还遇到了 NSpec,它看起来有点罗嗦,但结合了 NSpec Extensions 插件使用 C# 3 扩展方法,看起来很不错。

      【讨论】:

      • 你可能想看看这个 NSpec (nspec.org)。它几乎与 RSpec 相同。
      【解决方案6】:

      我使用以下:

      TestDriven.NET - Visual Studio 的单元测试插件

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

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

      【讨论】:

        【解决方案7】:

        您可能会发现有趣的是,Gallio v3.1 现在通过IronRuby 支持RSpec

        【讨论】:

          【解决方案8】:

          我喜欢 TestDriven.NET(即使我使用 ReSharper),我对 XUnit.net 非常满意。它使用事实而不是许多人不喜欢的测试,但我喜欢术语上的差异。考虑一组关于您的软件的可自动证明的事实并查看您在进行更改时违反了哪些事实是很有用的。

          请注意Visual Studio 2008 Professional (and above) now comes with integrated Unit Testing(它曾经仅在 Team System 版本中可用)并且可能适合您的需求。

          【讨论】:

            【解决方案9】:

            我曾经使用过 NUnit,但由于它具有更多功能,所以我切换到 MbUnit

            我喜欢 RowTest。它可以让你参数化你的测试。 NUnit 确实有更好的工具支持。我正在使用 ReSharper 运行 MbUnit 测试。我在为 MbUnit 运行我的 SetUp 方法时遇到了 TestDriven.NET 的问题。

            【讨论】:

              【解决方案10】:

              NUnit、MSTest 等都做几乎相同的事情。但是,我发现 NMock 不可或缺。

              NMock 或任何模拟包都不是单元测试,但它使进行单元测试变得非常容易,甚至可以。

              【讨论】:

                【解决方案11】:

                我喜欢MbUnit,呃,Gallio。对我来说最重要的是在 Visual Studio 中有良好的工具支持。为此,我使用Resharper,它有一个MbUnit test runner。很多人似乎也喜欢TestDriven.NET 作为他们的测试运行者。

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 2016-11-18
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2011-08-10
                  • 2010-10-09
                  • 2012-09-30
                  相关资源
                  最近更新 更多