繁体   English   中英

对于 Visual Studio 2008 中的 C#,我应该从哪个单元测试框架开始? (Windows 窗体应用程序)

[英]Which Unit Test framework should I start with for C# in Visual Studio 2008? (Windows Forms app)

问题 - 如果我使用 Visual Studio 2008 在 C# 中启动 Windows 窗体应用程序,我应该使用哪个单元测试框架?

VS2008 中似乎有一个版本? 或者我应该研究类似 NUnit 的东西? 或者说NUnit 是VS2008 引擎盖下用的什么? 什么是最受欢迎的。

拥有允许以下内容的东西会很好:(a)模拟/存根,以及(b)断言异常的能力

谢谢

我建议将 NUnit 用于您的测试框架。 如果您需要在构建服务器上设置它,它非常轻巧且易于运输。 这不是使用 MSTest 的情况。 至于模拟/隔离框架,Rhino Mocks 拥有最大的用户群,您可能会使用 Rhino Mocks 最快找到问题的答案。

如果它只是一个简单的应用程序,那么 VS2008 中内置的 MSTest 框架应该可以满足所有要求。 它与 NUnit 不同,尽管很多人(错误地)将其视为同一事物。

我从来没有用它来嘲笑,所以也许其他人可以详细说明。 它会在您的解决方案中生成一个单独的项目,仅用于测试目的。 这是如何使用它的一个很好的解释。

替代文字
(来源: geekzone.co.nz

编辑:做更多的挖掘,我发现了 MSTest 和 NUnit 的这个比较

NUnit 框架的缺点:

  • NUnit 的安装在一个单独的 MSI 中。
  • 不与 Visual Studio 集成。
  • 需要手动编写测试用例。
  • 没有自动生成代码。
  • 需要打开单独的窗口(NUnit 控制台或 GUI)来执行测试用例。
  • 测试用例执行的顺序不可用。
  • 没有用于调试测试用例的内置功能。
  • 没有启用/禁用测试用例的内置功能。
  • 没有内置功能来提供测试用例的附加信息,如堆栈跟踪、跟踪信息等。
  • 没有内置功能可以根据计算机名称、类名称和主机类型等对测试用例进行排序。

那是我链接到的比较文章。

我从未使用过 NUnit,只使用过 C# 的 MSTest 和 Java 的 JUnit,所以我在这方面有点偏见。 对于 WinForms ,MSTest 对我来说一直非常有效,具有能够单独运行测试、显示非常详细的报告(带有单独的跟踪日志)和自动生成所有样板测试代码以及​​执行所有使 VS2008 如此的功能等功能一个出色的 IDE。 听上去,NUnit 对其他人来说运行良好,他们有自己的理由喜欢它。

除非您有特殊的理由采用 NUnit/Testdriven.NET 方法,例如您需要某个功能,或者您只是喜欢这种设置测试并尝试将其集成回 VS 的方式,否则我看不出有任何理由不要只使用开箱即用的 MSTest。

我们已经开始使用 MSTest。 它具有在 NUnit 中(轻度)难以复制的优势。 它允许您访问类的私有成员。 当您检查状态时,这非常宝贵。 例如,假设我有一个函数可以将条目放入未公开的字典中。 我的理解是,对于 NUnit,您必须使用反射来访问字典,或者仅出于测试目的添加 getter。 在这里,你可以查字典。 很容易也很干净。 它还允许您测试我喜欢的私有函数(我知道有些人不相信这一点)。 虽然我不喜欢 MSTest,但该功能使测试变得更加容易。

VS 集成也不错。

使用 MSTest。 它内置于 VS2008 中,并在 IDE 中支持创建测试功能。 如果当你“超过”MSTest 时,那么你应该看看 NUnit 或更现代的xUnit 您可以通过使用 ExpectedException 属性进行修饰来预期 MSTest 中的异常。

[Test]
[ExpectedException(typeof(ArgumentNullException))]
public void Should_throw_ArgumentNullException_when_the_Order_is_null()
{
    OrderProcessor processor = new OrderProcessor();
    processor.ProcessOrder(null);
}

模拟框架独立于您选择的测试框架。 模拟框架的流行选择是: MoqRhino Mocks

我会说,为简单起见,从内置于 2008 年的 Visual Studio 开始。NUnit 非常棒,我经常使用它,因此一旦您对编写单元测试感到满意,您就可以继续使用 NUnit。

你没有提到你是否要测试驱动代码..

  • 如果您不熟悉任何 xUnit 框架,请使用 NUnit。 最小的学习曲线。 它已经存在了更长时间。 Charlie Poole 活跃于 NUnit(开源)并且拥有良好更新的良好历史。
  • VS2008 内部集成了 MSTest。 它与 NUnit 不同。 我从来没有理由从 NUnit 切换过来。 我认为 NUnit 绝对拥有最大的用户群。
  • NUnit 为 Mocks 捆绑了一些东西,但我肯定会向您指出Moq Rhino Mocks一段时间以来一直是顶级狗,但 Moq 的学习曲线更容易(来自在线文档),尽管它可能并不总是处理边缘场景......但恕我直言
  • 两者都支持断言异常。

我建议您阅读一本薄书“使用 NUnit 在 C# 中进行实用单元测试”,并至少通读一遍。

在 NUnit v MSTest 行上,我不适合发表评论。 0 飞行时间与 MSTest。

  • 尽管我听说 VS2010 会提供诸如自动代码覆盖率报告之类的小玩意……前提是您进行了 MSTest 测试。 但这就是我一直听到的那种支持 MSTests 的论点……更多关于 IDE 支持和集成。 有很棒的插件,如 Resharper 和 TestDriven,可以修补它,但需要付出一定的代价。
  • 另外恕我直言,微软的单元测试工具有一种微妙的方式来引导你走上黑暗的道路。 所以要小心。 请参阅我在此线程上对戴尔的评论。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM