VS 2013 MSTest vs nUnit vs xUnit
我意识到有关此主题有很多问题,但不知何故我找不到能满足我需求的问题。
我的团队希望开始对我们的应用程序进行自动化的单元测试。我们之前从未做过,团队中没有人有很多经验。我被要求研究并找到一个使我们的单元测试自动化的框架。到目前为止,我已经将选择范围缩小到了MSTest,NUnit和xUnit。
在整个互联网上,我都读到了有关MSTest的负面评论,但这对我来说似乎是最便捷的工具。
1)我们的应用程序是.NET
2)我们使用授权的VS IDE进行整个团队的开发。
3)源代码控制是Team Foundation Server 2010
4)我们计划将CI / CD集成为软件交付过程的一部分。
我觉得MSTest可以直接集成到此设置中,并为我们提供最干净的界面。我们应该考虑,NUnit或xUnit是否比MSTest有明显的优势?
我因为在NUnit上工作而有偏见,但是NUnit或xUnit的优点是两个框架都提供了更多功能,例如数据驱动的测试,并行执行和许多高级功能。
就是说,MSTest没什么错,特别是如果您的团队对单元测试没有很丰富的经验。它与Visual Studio和TFS很好地集成在一起,因此添加测试非常轻松。 NUnit和xUnit都集成得很好,但是它们可能需要更多的设置。
继续并从MSTest开始。这是单元测试的简单介绍。如果您开始遇到MSTest的某些限制,那么向NUnit或xUnit迁移是相当容易的。对于简单的情况,只需更改NuGet软件包,然后查找/替换属性即可。
在xUnit和NUnit之间进行选择时,两者都是不错的选择,但每个都有不同的理念。 NUnit趋向于更加灵活,并且允许多种测试样式,并且可以用于集成测试。但是,它足够灵活,可以让您用脚射击,也可以编写纯粹主义者不愿接受的测试。 NUnit由您自己选择。
但是,xUnit往往会显得有些自以为是,并推动您迈向单元测试的"成功之坑"。以我的经验,这对于新建项目非常有用,但如果不进行重构,可能会使测试某些架构较差的棕色项目变得困难。
最后,您不会错失任何这些测试框架。
我想添加XUnit的一个负面方面。
它甚至没有基本的文档,仅"入门"之外。没有API,什么都没有。
这是对这三个框架的简要分析,并按颜色排名。
着色图例:
MSTest的好处仅在于它很简单并且已集成到Visual Studio中,并且它来自Microsoft。它不够灵活且扩展性很差。但是它不仅支持单元测试框架,还支持集成测试,Web(负载)性能测试。另外两个是纯单元测试框架。所以我想说MSTest是"万事通,万无一失"。
NUnit是我的选择,因为它一直以来都是最好的。它具有很好的用户基础,文档和社区支持,因此更加灵活和简单。
XUnit至少是我的选择,因为它遵循略有不同的样式,而且我个人认为NUnit不会带来太多优势。在某些情况下,您需要对代码进行一些重构以适合测试用例。但这只是我的观点,因为许多人喜欢XUnit。
我将比较分为两类:
框架:
实现方式:
这些比较的来源