哪种单元测试框架?

73

我想知道哪个单元测试框架是一个好的选择来进行深入学习?虽然这可能是一个主观的问题,但我想问一下。我知道有一天我会需要用到它,所以我最好学会使用它。我知道有很多不同的框架,但哪一个对于C#开发是有效的呢?

这个问题中可以看出单元测试是必要的,但个人而言我还没有使用过。这就是为什么我问这个问题的原因。


这确实是一个糟糕的问题,应该被关闭并标记为S&A。它既没有包含任何好的答案,除了“嘿,我使用xyz,它真的很酷”,也不是对于寻找当前框架比较的人们来说有价值的资源。 - Johannes Rudolph
https://dev59.com/VHVC5IYBdhLWcg3wixs0 - nawfal
2
我发现这是我与谈论此网站的人们所遇到的主要问题之一。你们有关于提问的严格规定,但却被提问恶意者破坏,人们只想诚实地提出问题并得到一个好的答案。如果你们要筛选每个问题,也许应该筛选那些不好的回答,让人们从这个社区中全面地学习他们想要的东西。这不可能是第一次,而且在这里提问的人数也不可能很少。因此,请找到更好的方法来解决这个问题,而不是禁止人们在六个月内提问。 - Rob
7个回答

57

个人而言,我更喜欢使用Visual Studio单元测试框架,主要有两个原因:

  • 它可以与IDE无缝集成;
  • 这样在开发环境中就少了一个需要部署的程序。

话虽如此,几乎任何单元测试框架都可以胜任,重要的是要进行测试!


13
不利之处是:如果你希望(你确实希望)进行持续集成构建并运行测试,那么你的TFS也需要拥有VS许可证。这对于更大的公司或合作伙伴可能不是问题,但至少还需要考虑一件事情。 - mbx
5
NUnit现在支持与IDE无缝集成,而且不需要任何部署(如果使用NuGet)。 - John Gietzen
1
@mbx - TFS构建代理不需要VS许可证。 - Spivonious
2
@Spivonious 技术上讲,TFS/Build代理需要一个有许可的VS。然而:如果您拥有一个或多个带有MSDN的Visual Studio Enterprise或Visual Studio Professional的许可用户,则可以将Visual Studio软件安装为Team Foundation Server 2015 Build Services的一部分。这样,您就不需要购买Visual Studio许可证来覆盖每个启动构建操作的人在构建服务器上运行Visual Studio的情况。请参阅:VS和MSDN许可证白皮书 - mbx

41

3
ReSharper 可以实现 NUnit 与 IDE 的无缝集成(还有很多其他优点)。 - TrueWill
我听说(尚未尝试)今天的MSTest有了显著的改进 - 并且并不比NUnit或其他测试框架差。这是真的吗?或者您仍然建议在新项目中使用NUnit? - Yoav Feuerstein

35

不要在选择框架上卡壳。只需选择一个开始测试 - 它们并没有太大的差异。当你写了一段时间的测试后,你就会知道如何寻找适合你需求的框架。

就我个人而言,我发现xUnitTestdriven.NetMoq是一套非常灵活的测试工具。

还可以查看这篇帖子:NUnit vs. MbUnit vs. MSTest vs. xUnit.net


1
+1 for Moq!喜欢那个框架。 - TrueWill

6

我决定坚持使用 NUnit,因为 ReSharper 提供本地 IDE 支持(这节省了很多时间)。它还得到 TeamCity 的支持,在运行和报告自动化测试方面也很不错。


2

我使用 NUnit 作为测试框架,使用 ReSharper 将其集成到 VS 中(以及 ReSharper 所做的一切其他事情)。


1
哎呀,ReSharper。已经修复了,谢谢。 - Robert Rossney

1

使用MbUnit(与Gallio一起),NUnit,MsTest或xUnit。您可以组合多个单元测试。我使用NUnit进行TDD


这在VS2015中不起作用。 - sweetfa

0

测试有几个原因,因此有几个测试环境。此外,还有不同级别的测试,如简单测试、存根和模拟。例如,您可以测试行为而不是状态。

就功能而言,我通常使用Visual Studio内置的设置,添加对NUnit dll的引用,并将c#注释更改为NUnit。这是因为我喜欢在Visual Studio之外进行测试,特别是当涉及到团队中的其他人时(我们还没有购买VS的团队版)。


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