关于c#:. NET测试框架建议

关于c#:. NET测试框架建议

.NET Testing Framework Advice

我希望在我的工作中将单元测试框架引入其中。 我们正在使用Visual Studio 2005(尽管我们可能会在接下来的6个月内升级到2008),并且主要在C#中工作。 如果该框架具有某种最佳的IDE集成,但是我愿意接受那些没有集成但仍相对易于设置的框架。 我将以一种或另一种方式来抵抗它,因此,如果我可以确保所推动的不是脖子上的痛苦,那将对我的情况有所帮助。

到目前为止,我所做的研究中显而易见的选择指向nUnit,但在将其推荐给我的团队之前,我想得到一个实际使用它的人的印象。

有没有人使用过nUnit? 如果是这样,我应该注意哪些陷阱或限制? 还有其他好的选择吗? 如果是这样,那么如果您同时使用了这两个nUnit,我将非常感谢您了解它们的优缺点。


我认为NUnit是您最好的选择。使用TestDriven.NET,您可以在VS.NET中获得很好的集成。 (Resharper也有一个单元测试运行器,如果您正在使用它)。 NUnit它??易于使用,并遵循已建立的范例。您还会发现大量使用它的项目/教程/指南,这总是有帮助的。

您的另一个主要选择可能是MBUnit,它越来越多地成为选择的BDD框架(结合Gallio http://www.gallio.org)。


斯科特·汉塞尔曼(Scott Hanselman)对此进行了很好的播客,标题为:

"The Past, Present and Future of .NET Unit Testing Frameworks"

Hanselminutes#112


VS 2008中的内置单元测试还可以,但是它很难与CruiseControl.net集成,当然比普通的NUnit难得多。

因此,如果您打算进行自动测试,请使用NUnit


Visual Studio 2008具有内置的测试项目类型,其工作方式与NUnit类似,但显然与Visual Studio紧密集成(可以在每个版本上运行,并在升级时以类似于转换结果页面的方式显示结果解决方案文件),但它显然还不如NUnit成熟,因为它很新,我不确定它如何处理模拟。

但值得一提的是,您的团队何时迁移到VS2008


我们一直在使用xUnit.net。它似乎结合了NUnitmbUnitMSTest的所有优点。


如果您正在寻找功能测试自动化,VSTT 2010应该是一个不错的选择。 Web服务测试,UI测试,Biztalk测试和数据驱动测试支持。请看VSTT


也尝试PEX工具
微软自己可能很快将其集成到VSTS中
并支持NUnitmbUnitxUnit.net

我也使用小型控制台应用程序来测试一个类或小型库。您可以从此处复制粘贴代码


当我开始单元测试时,我以NUnit开始,因为它易于设置和使用,目前我使用的是Resharper附带的内置测试运行器,这样我就可以轻松地在代码和测试结果之间切换。
偶然地NUnit会检测到何时编译了代码,因此您无需在NUnit中进行任何刷新。当您选择运行特定的测试时,Resharper会自动进行构建。


mbUnit值得一看,它具有与NUnit相当的一组功能,具有自己的GUI,或者如果具有Resharper,则可以集成到VS中。如果您正在执行任何类型的TDD,我也建议您使用Rhino Mocks


我还要说mbUnit,我希望能够仅通过在测试函数上方指定输入和结果来多次运行单个测试。我的意思的恐怖描述,所以这里的链接显示了我的意思。


推荐阅读