Visual Studio 2013 MSTest与NUnit


70

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

过去,我已经阅读了几篇MSTest vs nUnit的文章和文章,但是大多数文章都比较了旧版本的MSTest。此外,与MSTest相比,nUnit具有许多有利的评价。

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

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


MSTest和NUnit都可以稳定使用多年(没有重大进展),因此,如果您能找到旧帖子,我认为没有必要再进行其他比较。
Lex Li

Answers:


59

自从最初推出以来,MSTest并没有太大变化,因此那些旧的比较文章仍然有效。微软对ALM的关注主要是针对进一步的工具和服务器产品,但是基本的测试框架并没有太大变化。

还值得注意的是,MSTest及其整个ALM策略针对许多不同类型的自动化测试,包括集成测试,系统测试,性能测试等,因此,尽管它试图成为一种“一刀切”的产品,非常不适合单元测试,因为它太重了,无法使用。

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

相反,我建议使用xUnit.net。尽管它也不完美,但它是当前.NET上最好的主流替代方案。xUnit.net比MSTest更好的原因有很多。


6
TFS的持续集成功能支持xUnit吗?
空引用

您可能需要摆弄它,但它确实有一个MSBuild运行器,捆绑在nuget.org/packages/xunit.runners中
Mark Seemann

@IsaacKleinman您看到xunit.github.io吗?...它有一个入门教程和常见问题解答,还不错。
dodgy_coder 2014年

我有,我也选择的xUnit,但不幸的是,单元测试一直是我最近..最高优先级
艾萨克·克雷曼

1
@DavidRefaeli从那时起我就再也没有看过MSTest,但是我什么都没听说过。我认为这说明Roslyn,.NET Core和ASP.NET Core代码库都使用xUnit.net(因此不是MSTest)作为单元测试框架。
马克·塞曼

39

MSTest与NUnit:

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

总体而言,两个框架都很好用,但是我建议您使用NUnit。


1
2:对于NUnit,您有免费/开源的OpenCover + ReportGenerator工具。
nzeemin 2015年

8
如果将ReSharper与Visual Studio一起使用,它将启用NUnit测试的并行化。它还提供了您在项目符号1中提到的集成。当然,并不是每个人都拥有ReSharper,但是如果您这样做,它就会带走MSTest拥有的一些优势。
jfren484 2015年

3
NUnit与VS 2012的GUI测试运行器集成。
Scott Marcus
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.