【问题标题】:Visual Studio 2013 MSTest vs NUnitVisual Studio 2013 MSTest 与 NUnit
【发布时间】:2014-03-26 02:17:06
【问题描述】:

我的公司正在将我们的 Visual Studio 2012 升级到 2013 Premium。在此过程中,我们还希望开始使用 Visual Studio Team Services 自动化我们的测试

我过去读过几篇 MSTest 与 nUnit 的帖子和文章,但其中大部分是比较旧版本的 MSTest。此外,与 MSTest 相比,nUnit 获得了很多好评。

我的问题是,考虑到 Microsoft 对 ALM、敏捷实践的承诺以及他们添加到 VS2013 Premium 和 Visual Studio Team Services 中以促进和鼓励自动化测试的所有新内容,MSTest 与 nUnit 相比如何?

在决定要使用的测试框架之前,我还应该考虑哪些其他因素?

【问题讨论】:

  • MSTest 和 NUnit 多年来都很稳定(没有显着进步),所以如果你能找到旧帖子,我认为没有必要再进行比较。

标签: visual-studio unit-testing nunit visual-studio-2013 mstest


【解决方案1】:

MSTest 自最初引入以来并没有太大变化,因此那些旧的比较帖子仍然有效。 Microsoft 对 ALM 的关注主要针对进一步的工具和服务器产品,但基本测试框架没有太大变化。

还值得注意的是,MSTest 及其整个 ALM 策略针对许多不同风格的自动化测试,包括集成测试、系统测试、性能测试等,因此虽然它试图成为一刀切——总而言之,它非常不适合单元测试,因为它太重而无法使用。

虽然 NUnit 更好,但我也不推荐它。多年来,它也没有太大变化,而且可扩展性模型坦率地说是一团糟。

相反,我推荐xUnit.net。虽然它也不完美,但它是目前 .NET 上最好的主流替代方案。 xUnit.net is better than MSTest的原因有很多。

【讨论】:

  • TFS 的持续集成功能是否支持 xUnit?'
  • 你可能需要稍微摆弄一下,但它确实有一个 MSBuild 运行器,捆绑在 nuget.org/packages/xunit.runners
  • @IsaacKleinman 你见过xunit.github.io 吗? ...它有一个入门教程和常见问题解答,还不错。
  • 我有,而且我确实选择了 xunit,但不幸的是,单元测试最近一直是我的首要任务..
  • @DavidRefaeli 从那以后我没有看过 MSTest,但我没有听说任何事情发生了变化。我认为这说明 Roslyn、.NET Core 和 ASP.NET Core 代码库都使用 xUnit.net(因此 not MSTest)作为单元测试框架。
【解决方案2】:

MSTest 与 NUnit:

  1. MSTest 与 VS 集成,因此易于使用。 NUnit 将需要第三方工具(有些是免费的,有些是付费的)。
  2. VS 将在 MSTest 中为您提供代码覆盖率。 NUnit 需要 DotCover(这是一个付费工具)。
  3. 如果测试不相互依赖,MSTest 可以选择并行执行测试。这不是 NUnit 提供的功能。
  4. NUIt 有 TestCaseSourceAttribute,它可以帮助您实现参数化测试用例,但在 MSTest 中,您需要 DataSourceAttribute,它位于 XML 文件中,并且当您在方法中有复杂逻辑时将难以管理。
  5. 与 MSTest 相比,NUnit 更快。

总的来说,这两个框架都很好用,但我建议使用 NUnit。

【讨论】:

  • 2:对于 NUnit,您有免费/开源的 OpenCover + ReportGenerator 工具。
  • 如果您将 ReSharper 与 Visual Studio 一起使用,它将启用 NUnit 测试的并行化。它还提供了您在项目符号 #1 中提到的集成。当然,不是每个人都有 ReSharper,但如果你这样做了,它就会带走 MSTest 的一些优势。
  • NUnit 与 VS 2012 的 GUI 测试运行器集成。
猜你喜欢
  • 2011-01-22
  • 2013-11-12
  • 2016-10-30
  • 2014-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-07
  • 1970-01-01
相关资源
最近更新 更多