【问题标题】:NUnit vs Team System Unit TestNUnit 与团队系统单元测试
【发布时间】:2010-10-16 23:39:32
【问题描述】:

你更喜欢哪个?

每个单元测试的优缺点是什么?

编辑:我承认 Team System 提供的不仅仅是单元测试,例如应用程序和数据库的性能和负载测试。这个问题的重点是编写单元测试以及您更喜欢哪个。

【问题讨论】:

标签: unit-testing nunit


【解决方案1】:

Nunit:

优点:

  • 免费
  • 在属性和断言方法上与团队系统非常相似,有些名称甚至相同

缺点:

  • 测试必须通过控制台或外部应用程序运行(这可以被视为优势,但在我看来并非如此)。

团队系统测试

优点:

  • VS的一部分,可以在测试窗口中运行测试。
  • 如果您运行团队系统服务器,则可以在自动构建过程中更轻松地运行测试

缺点:

  • 昂贵
  • 仍然不如 NUnit 稳定

A comparison between team system and Nunit

我们使用团队系统 2008,因为我们是微软的金牌认证合作伙伴,但由于 VS 2005 中的错误相关问题,我们更早使用 Nunit。我更喜欢 VS 解决方案

两者都是您工作的好解决方案,也请注意其他免费解决方案,例如:

Good alternatives to Team System

【讨论】:

  • 使用 Resharper 或 TestDriven.net 运行 NUnit 测试也完全集成在 VS 中,测试在测试窗口等中运行。
  • TestDriven 集成太弱了,尽管我更喜欢 testmatrix 之类的东西。 Resharper 也很棒。
  • 是的,我研究了 TestDriven。但是,它是 $$$。
  • 在 vs2008 中,仅基于单元测试与团队系统进行比较是不公平的(因为那只是你得到的一小部分)。特别考虑到您在 vs 2008 的专业版中确实有单元测试。
【解决方案2】:

一个非常具体的原因是,NUnit 不会将您绑定到 Visual Studio 的专业版。

更新:以下是关于 vs 2008 中Professional 版的单元测试支持的链接:http://msdn.microsoft.com/en-us/library/bb385902.aspx

【讨论】:

  • @Eric 不,我的意思是这样,请检查我的答案更新中的链接
【解决方案3】:

NUnit 的另一个优点是它不需要您向测试类添加任何内容。 MSTest 需要存在 TestContext 属性。我们从 MSTest 开始,但转换为 NUnit。我还发现 NUnit 明显更快,我更喜欢 ReSharper 的测试运行器 UI。

【讨论】:

  • @Jamie 您可以根据需要将 testcontext 排除在外,即这将运行: [TestClass] public class UnitTest3 { [TestMethod] public void TestMethod1() { Assert.AreEqual(2, 2); } }
【解决方案4】:

目前 NUnit 有测试类别,允许您将单元测试与较慢的集成测试分开运行。

MS Tests 没有这样的内置机制。

【讨论】:

  • @total 您可以在当前上下文中运行所有测试,这意味着:单个测试、一个类或整个命名空间。有了适当的命名空间,你就可以做到。
  • 抱歉,我的意思是来自 TFS 构建或 MSTest 命令行。要执行等效操作,您必须指定单个测试或在 vsmdi 文件中手动创建测试列表。
【解决方案5】:

使用 MS Tests 时,可以使用CHESS

CHESS 是用于系统地测试多线程代码的工具。给定一个并发测试,CHESS 系统地沿着所有可能的线程交错驱动测试。

另外,我发现一个很好的比较 here 声称 MS 测试比 NUnit 慢一点,但我自己没有检查。

【讨论】:

  • 我现在正在看 CHESS 进行一些同步测试,但是我们在 Stack Overflow 上的所有单元测试都在 NUnit 中;我猜线程测试必须使用 MSTest。
【解决方案6】:

Visual Studio 2008 不允许您在创建测试项目时使用其他测试框架吗?当 Hanselman 做预览 2 或 3 视频时,我在观看旧的 MVC 框架视频时依稀记得这一点。

这将允许您使用任何您喜欢的测试框架,并且仍然可以在您的 VS2008 IDE 中使用它。

【讨论】:

    【解决方案7】:

    测试私有方法怎么样。 Team System 使用反射自动创建影子访问器 - NUnit 是否相同?

    【讨论】:

      【解决方案8】:

      总是有像 ReSharper 和 TestDriven.NET 这样的工具。它们将允许您从 Visual Studio 运行测试

      【讨论】: