单元测试,NUnit还是Visual studio?[已关闭]

qnyhuwrf  于 2023-02-09  发布在  其他
关注(0)|答案(9)|浏览(142)

已关闭。此问题为opinion-based。当前不接受答案。
**想要改进此问题吗?**请更新此问题,以便editing this post可以用事实和引文来回答。

1年前关闭。
Improve this question
我正在使用Visual Studio(有时是resharper)来运行我的单元测试。
我听说过NUnit,但我对它了解不多...
我应该关心它吗?它能提供比visual studio更好的东西吗?
我应该使用NUnit吗?为什么?

ie3xauqp

ie3xauqp1#

NUnit与MS-Test相比几乎没有优势

  1. Suite属性-可以聚集测试并分别执行它们(例如,对于具有快速和慢速测试的大型项目非常有用)
    1.可读Assert方法,例如Assert.AreEqual(expected, actual)Assert.That(actual, Is.EqualTo(expected))
  2. NUnit有频繁的版本更新- MS-Test每个VS版本只有一个。
    1.许多集成的运行程序,包括Resharper和TestDriven.NET
    1.预期异常消息Assert-可使用NUnit中的属性完成,但必须使用MS-Test中的Try-Catch完成
  3. [TestCase]!NUnit允许进行参数化测试。
xlpyo6sf

xlpyo6sf2#

从我目前的Angular 来看(经过8个月的开发,平均约有10名开发人员),我建议不要使用MSTest,原因如下

  • 这个框架本身是相当慢的。我不是指你写的测试代码--那是在你的控制之下。我的意思是运行那些测试的框架是很慢的,无论是运行测试套件,还是单个测试等等。
  • 需要保留一个测试元数据文件,当多个开发人员同时使用它时(例如重新创建元数据等),这总是会导致复杂化。其他测试套件不需要元数据文件。组织测试是一件好事,但您可以通过名称空间、类和方法名称来实现。
  • 执行持续集成时,如果要在生成计算机上运行单元测试,则需要在该计算机上安装Visual Studio。

换句话说,如果我在8个月前再次决定,我可能会选择NUnit,我可能没有集成的测试结果报告,但开发人员将有一个更无缝的测试体验。

9rbhqvlz

9rbhqvlz3#

以下是我使用MS Test的经验

  • 我们正在运行MS测试与约3800测试。
  • 测试要花很长时间才能开始执行,这在运行单个测试时是很痛苦的。
  • 执行测试需要大约1GB的内存。不,这不是由于我们测试中的内存泄漏。我们经常遇到OutOfMemoryExceptions。
  • 因为它使用了大量的资源,所以我们开始从批处理文件中执行测试。那么整个集成有什么好处呢?
  • 它有缺陷且不稳定:
  • 例如,如果您从测试中移除[Ignore]属性,它将无法识别它,因为它将测试信息缓存在某处。您需要刷新测试列表,这有时可以解决问题,或者重新启动VS。
  • 它不会随机将引用程序集复制到out目录。
  • 部署项(要使用的附加文件)不能正常工作。它们被随机忽略。
  • vsmdi和testrunconfig文件中有隐藏的(在测试代码中不可见)信息,如果你不关心它,它可能不会工作。
  • 在功能上,它可能与NUnit相当,但如果考虑使用VS测试版,它的成本会非常高。
    • 补充:**我们现在有一些更多的测试,甚至不能说有多少。由于OutOfMemoryExceptions和其他不稳定问题,不可能再从Visual Studio运行所有这些测试。我们从脚本运行测试。在Visual Studio中查看测试结果很容易,但是当解决方案打开时,VS崩溃(每次)。因此我们需要使用文本搜索来搜索失败的测试。集成工具不再有优势。
    • 另一项更新**:我们现在使用的是VS 2013。很多事情都发生了变化。自从我们开始使用以来,他们第三次重写了MS Test测试运行程序。这引起了很多突破性的变化,但没有一个新版本做得更好。我们很高兴我们没有使用MS Test的花哨功能,因为它们都不再被支持了。这真的很遗憾。我们仍然使用脚本来构建和运行所有的单元测试,因为它更方便。VisualStudio需要几分钟时间才能开始运行测试(编译后到第一次测试开始的时间度量)。他们可能用更新来修复它,这可能是我们项目的一个特定问题。然而,在运行相同测试时,重新锐化器要快得多。
    • 结论**:至少在与Resharper结合使用时,MS Test是有用的。我希望他们最终找到测试运行程序应该如何编写,并且在我们下次更新Visual Studio时不会进行这种破坏性的更改。
nhaq1z21

nhaq1z214#

NUnit可以和visual studio结合使用。它是一个框架而不是一个单独的程序。所以你可以看看它是否适合你:)。

(来源:codeplex.com
“安装插件后,你会在工具菜单下找到一个新的子菜单.”
有关导入它的详细信息,请参见http://nunitit.codeplex.com/
此外,使用SO搜索可以找到很多。This topic列出了NUnit相对于MS标准测试的优势。

c90pui9n

c90pui9n5#

MS-Test相对于NUnit最大的优点是MS-Test可以使用Reflection生成模拟对象。

wb1gzix0

wb1gzix06#

NUnit与VS的标准版一起使用。

xxslljrj

xxslljrj7#

我不确定其他人,但NUnit提供了很好的GUI和控制台来运行您的单元测试,而且您还可以生成NUnit测试执行结果的报告,该报告将给予测试是否失败或通过的详细信息,以及单元测试所用的时间

oug3syen

oug3syen8#

NUnit是一个单元测试框架,也是Resarper支持的,我想大家使用的是微软的单元测试框架,所以NUnit只是微软产品的替代品;)
下面是NUnit主页的链接:http://nunit.org

ds97pgxw

ds97pgxw9#

NUnit中,测试不是并行执行的。相反,所有测试似乎都在单个线程上执行。在MSTest中,每个测试都在单独的线程上示例化,这会导致交叉运行。因此,如果测试A依赖于测试B才能成功,则测试A可能会失败,因为测试B可能会在测试A运行时开始运行。

相关问题