有哪些不同的.NET单元测试框架?

4

我听到了很多不同的意见,关于什么使一个单元测试框架比另一个更好。但是有人能够提供一个技术上的解释,为什么我应该选择一个单元测试框架而不是另一个。例如,我使用Visual Studio Team System。为什么我会选择一个开源的测试框架(NUnit、xUnit、MbUnit等)而不是Visual Studio内置的单元测试功能?这有关系吗?

编辑:为了明确,我不是在寻求“哪个单元测试框架最好”的意见...我正在寻找它们之间的技术细节。

3个回答

7
http://www.codeplex.com/xunit/Wiki/View.aspx?title=Comparisons中,对NUnit、MbUnit、MSTest和xUnit.net之间的属性和断言差异进行了比较。
至于MSTest与开源解决方案的比较,普遍认为开源包,尤其是MBUnit和xUnit.net是单元测试创新发生的地方。
话虽如此,现在Peli de Halleux正在为MS工作,并且像Pex这样的创新产品也可能会改变这种情况。

5
我只用过NUnit和微软版本的测试框架,我认为它们相似度更高。但是,根据你的项目设置,可能有一些相关的财务考虑因素。
微软的测试框架在他们不太昂贵/免费的SKU中不可用,但是一旦你付费购买了整个软件包(这并不便宜,我知道),你就可以获得单个软件包中的单元测试、测试运行器和代码覆盖率,非常方便。
如果你切换到NUnit,你要么放弃VS集成,要么获得一个测试运行器,如TestDriven.NET或Resharper。当我查看这些工具时,它们都需要商业使用许可证。即每个开发人员的成本会增加。此外,这些工具没有代码覆盖率,所以你必须获取类似于NCover的东西。同样,当我检查时,这也需要商业使用许可证。
诚然,我已经很久没有研究这个问题了,所以许可证可能已经改变,但是每个开发人员的额外成本是我们选择微软解决方案的原因之一。也许VS Express加上其他工具比VS Team Foundation便宜,但既然我们必须使用VS TF,那对我们来说没什么用。
如果你正在进行开源/非商业项目,我相信你可以获得免费版本。

实际上我正在使用Resharper,它是一个非常好的工具,但这并不改变它增加了设置成本和复杂性的事实。 - Brian Rasmussen
只是一个更新,Jetbrains(制作ReSharper的公司)现在提供了自己的代码覆盖率应用程序(作为单独的应用程序)http://www.jetbrains.com/dotcover/。 - Bryan Bailliache

2

我曾经使用过几个.NET单元测试框架,但对于我的目的来说,它们之间并没有明显的区别。

最初反对使用Visual Studio Team System中包含的单元测试的一个理由是,使用较低版本的Visual Studio的人无法运行您的测试。现在这不再是一个问题,因为我相信VS Pro现在包括单元测试。我喜欢Visual Studio可以自动为您生成许多测试框架。

只要您实际编写单元测试,我认为选择哪个工具并不重要。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接