Visual Studio 2013 MSTest与NUnit

Nul*_*nce 67 nunit unit-testing mstest visual-studio visual-studio-2013

我公司正在将Visual Studio 2012升级到2013 Premium.在此期间,我们还希望使用Visual Studio Team Services开始自动化测试

我过去读过几篇MSTest vs nUnit的帖子和文章,但大多数都比较了旧版的MSTest.此外,与MSTest相比,nUnit有很多有利的评论.

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

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

Mar*_*ann 57

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

值得注意的是,MSTest及其整个ALM策略针对许多不同风格的自动化测试,包括集成测试,系统测试,性能测试等,所以尽管它试图成为一个通用的,但它是非常不适合单元测试,因为它太重了,无法使用.

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

相反,我推荐xUnit.net.虽然它也不完美,但它目前是.NET上最好的主流替代品.xUnit.net优于MSTest的原因有很多.

  • 是否由TFS的持续集成功能支持xUnit?' (6认同)

小智 37

MSTest与NUnit:

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

总的来说两个框架都很好用,但我建议去NUnit.

  • 如果将ReSharper与Visual Studio一起使用,它将启用NUnit测试的并行化.它还提供了您在子弹#1中提到的集成.当然不是每个人都有ReSharper,但如果你这样做,它会带走MSTest的一些优势. (8认同)
  • NUnit与VS 2012的GUI Test runner集成. (2认同)