我意识到关于这个话题已经有很多问题,但不知怎的,我找不到满足我需求的问题。
我的团队正在寻求开始自动化单元测试我们的应用程序。我们以前从未这样做过,团队中的任何人都没有多少经验。我被要求研究并找到一个自动化单元测试的框架。到目前为止,我已将选择范围缩小到 MSTest,NUnit和xUnit 。
在整个互联网上,我阅读了关于MSTest的负面评论,但对我来说这似乎是最方便的工具。
1)我们的应用程序是.NET
2)我们使用许可的VS IDE进行整个团队的开发。
3)源代码管理是Team Foundation Server 2010
4)我们计划将CI / CD集成为我们软件交付流程的一部分。
我觉得 MSTest 集成到此设置中,为我们提供最干净的界面。我们应该考虑 NUnit 或 xUnit 优于 MSTest 的显着优势吗?
答案 0 :(得分:27)
我有偏见因为我在NUnit上工作,但NUnit或xUnit的优势在于两个框架都提供了更多功能,如数据驱动测试,并行执行和一系列高级功能。
也就是说,MSTest没有任何问题,特别是如果您的团队对单元测试不是很有经验。它与Visual Studio和TFS很好地集成,因此添加测试相当轻松。 NUnit和xUnit都集成得很好,但它们可能需要更多设置。
继续开始使用MSTest。这是一个简单的单元测试介绍。如果您开始遇到MSTest的一些限制,那么它很容易迁移到NUnit或xUnit。对于简单的情况,只需更改NuGet包然后查找/替换属性即可。
在xUnit和NUnit之间进行选择时,两者都是很好的选择,但每种都有不同的理念。 NUnit往往更灵活,允许一系列测试样式,可用于集成测试。然而,它足够灵活,允许你在脚下射击自己,并允许你编写纯粹主义者会皱眉的测试。 NUnit为您提供了选择。
然而,xUnit倾向于更加自以为是,并且通过单元测试将您推向“成功的关键”。根据我的经验,这对于绿色实地项目来说非常棒,但它可以在没有重构的情况下测试一些设计糟糕的棕色野外项目。最后,您不会错过任何这些测试框架。
答案 1 :(得分:10)
我想补充一下XUnit的一个消极方面。 除了“入门”之外,它甚至没有基本的文档。没有API,没有。
答案 2 :(得分:3)
着色传奇:
MSTest 这只是因为它很简单并且集成到Visual Studio中,它来自Microsoft。它不够灵活,不易扩展。但它不仅仅是一个单元测试框架,它还支持集成测试,Web(负载)性能测试。另外2个是纯单元测试框架。所以我会说MSTest是"所有行业的杰克,无人的主人。"
NUnit 是我的选择,因为它始终是最好的。它具有非常好的用户群,文档和社区支持,更加灵活和简单。
XUnit 是我最不喜欢的选择,因为它的风格略有不同,而且我个人认为NUnit并没有太大的优势。在某些情况下,您需要对代码进行一些重构以适应测试用例。但这只是我的意见,因为有许多人更喜欢XUnit。
答案 3 :(得分:2)