VS 2013 MSTest 对比 nUnit 对比 xUnit

VS 2013 MSTest vs nUnit vs xUnit

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

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

在整个 Internet 上,我阅读了有关 MSTest 的负面评论,但它似乎是我最方便的工具。

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

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

3) 源代码管理是 Team Foundation Server 2010

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

我觉得 MSTest 直接集成到此设置中,并为我们的工作提供了最干净的界面。我们应该考虑 NUnitxUnit 优于 MSTest 的显着优势吗?

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

也就是说,MSTest 没有任何问题,特别是如果您的团队在单元测试方面不是很有经验。它与 Visual Studio 和 TFS 很好地集成,因此添加测试相当轻松。 NUnit 和 xUnit 也集成得很好,但它们可能需要更多设置。

继续并从 MSTest 开始。这是对单元测试的简单介绍。如果您开始 运行 进入 MSTest 的一些限制,那么迁移到 NUnit 或 xUnit 是相当容易的。对于简单的情况,只需更改您的 NuGet 包,然后 find/replace 属性。

当谈到在 xUnit 和 NUnit 之间进行选择时,两者都是不错的选择,但每个都有不同的理念。 NUnit 更灵活,允许多种测试风格,可用于集成测试。然而,它足够灵活,可以让您搬起石头砸自己的脚,并允许您编写纯粹主义者不赞成的测试。 NUnit 将选择权交给您。

然而,

xUnit 往往有点自以为是,并通过单元测试将您推向 'pit of success'。根据我的经验,它非常适合绿地项目,但如果不进行重构,它会使测试一些架构不佳的棕地项目变得困难。

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

我想补充 XUnit 的一个消极方面。 它甚至没有基本的文档,仅 "Get Started"。没有 API,没有。

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

着色传奇:

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

NUnit 是我的选择,因为它在足够长的时间内一直是最好的。它具有非常好的用户群、文档和社区支持,更加灵活和简单。

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

我列出了两类比较:

框架:

实施:

The source of these comparisons