【问题标题】:VS 2013 MSTest vs nUnit vs xUnitVS 2013 MSTest vs nUnit vs xUnit
【发布时间】:2016-10-30 01:18:33
【问题描述】:

我意识到关于这个主题有很多问题,但不知何故我还没有找到满足我需求的问题。

我的团队正在寻求开始对我们的应用程序进行自动化单元测试。我们以前从未这样做过,团队中没有人对此有太多经验。我被要求研究并找到一个自动化单元测试的框架。到目前为止,我已将选择范围缩小到 MSTest、NUnit 和 xUnit

在整个互联网上,我都阅读了关于 MSTest 的负面评论,但它似乎对我来说是最方便的工具。

1) 我们的应用程序是 .NET

2) 我们在整个团队中使用许可的 VS IDE 进行开发。

3) 源代码控制是 Team Foundation Server 2010

4) 我们计划将 CI/CD 集成为我们软件交付流程的一部分。

我觉得 MSTest 直接集成到此设置中,并为我们提供了最干净的界面供我们使用。 NUnitxUnitMSTest 相比是否有我们应该考虑的显着优势?

【问题讨论】:

标签: unit-testing nunit automated-tests mstest xunit


【解决方案1】:

我将比较分为两类:

框架:

实施:

The source of these comparisons

【讨论】:

    【解决方案2】:

    这里是对 3 个框架的简要分析,并按颜色排名。

    着色传说:

    MSTest 之所以好只是因为它简单且集成到 Visual Studio 中并且来自 Microsoft。它不够灵活,也不是很可扩展。但不仅仅是一个单元测试框架,它还支持集成测试、Web(负载)性能测试。其他 2 个是纯单元测试框架。所以我会说 MSTest 是“万事通,无所事事”。

    NUnit 是我的选择,因为它一直以来都是最好的。它更加灵活和简单,拥有非常好的用户群、文档和社区支持。

    XUnit 不是我的选择,因为它遵循稍微不同的风格,我个人认为与 NUnit 相比没有太大优势。在某些情况下,您需要对代码进行一些重构以适应测试用例。但这只是我的看法,因为有很多人更喜欢 XUnit。

    【讨论】:

      【解决方案3】:

      我想补充一点 XUnit 的负面影响。 它甚至没有基本文档,除了“入门”之外什么都没有。没有 API,什么都没有。

      【讨论】:

      【解决方案4】:

      我有偏见,因为我在 NUnit 上工作,但 NUnit 或 xUnit 的优势在于这两个框架都提供了更多功能,例如数据驱动测试、并行执行和许多高级功能。

      也就是说,MSTest 没有任何问题,尤其是在您的团队对单元测试不是很有经验的情况下。它与 Visual Studio 和 TFS 完美集成,因此添加测试相当轻松。 NUnit 和 xUnit 也可以很好地集成,但它们可能需要更多设置。

      继续,从 MSTest 开始。这是单元测试的简单介绍。如果您开始遇到 MSTest 的一些限制,那么迁移到 NUnit 或 xUnit 是相当容易的。对于简单的情况,只需更改 NuGet 包,然后查找/替换属性即可。

      在 xUnit 和 NUnit 之间进行选择时,两者都是不错的选择,但各自的理念不同。 NUnit 往往更灵活,并允许一系列测试风格,并可用于集成测试。然而,它足够灵活,可以让您在脚下射击自己,并允许您编写纯粹主义者会皱眉头的测试。 NUnit 让您自行选择。

      然而,xUnit 往往更加固执己见,并通过单元测试将您推向“成功的坑”。根据我的经验,它非常适合新建项目,但如果不进行重构,它会使测试一些架构不佳的棕地项目变得困难。

      最后,这些测试框架中的任何一个都不会出错。

      【讨论】:

      • 我在 2000 年左右处于类似的位置,试图在大约六个 .NET 测试框架中进行选择。我选择了 NUnit,我就在这里。 :-)
      • 一篇关于 xUnit github.com/xunit/xunit/issues/350 的有趣帖子。断言错误消息已经消失并且不会在 xUnit 中返回。当我看到他们在仍然存在争议的情况下结束这个问题时,我不确定我是否应该对他们未来的发展抱有信心。我们怎么知道他们不会再为了“纯粹”而删除其他任何东西?
      • 编写测试以重构架构不佳的代码不是重点之一吗?
      • @frostymarvelous 是的,但是如果不先重构就无法编写测试,那你就有点卡住了 ;)
      • 有道理@Stijn
      猜你喜欢
      • 2010-11-25
      • 2014-05-03
      • 1970-01-01
      • 2015-04-04
      • 1970-01-01
      • 1970-01-01
      • 2013-11-03
      • 1970-01-01
      相关资源
      最近更新 更多