Visual Studio Unit Test VS NUnit

公司里用的是NUnit,但是用起来并不觉得好用,因为发现VS的测试代码可以自动生成的。于是大致比较了一下Visual Studio里自带的Unit TestNUnit的区别。

stackoverflow上有人讨论过这个问题。下面的条目都是摘自各个网页。做个汇总,方便大家参考。 

 

最表面上来看,用的类库不同,这个问题很好通过一个宏来解决。

 

#if !NUNIT

     using Microsoft.VisualStudio.TestTools.UnitTesting;

 #else

     using NUnit.Framework;

     using TestClass = NUnit.Framework.TestFixtureAttribute;

     using TestMethod = NUnit.Framework.TestAttribute;

     using TestInitialize = NUnit.Framework.SetUpAttribute;

     using TestCleanup = NUnit.Framework.TearDownAttribute;

     using TestContext = System.String;

     using DeploymentItem = NUnit.Framework.DescriptionAttribute;

 #endif

 

 

NUnit有这样几个优点

1.       独立于IDE,可以单独运行。也可以以命令行方式运行。(vs应该也可以吧?)

2.       版本更新快。(我不认为这是个优点,而且我也并不觉得快啊。)

3.       VSUT工具运行速度慢。(不一定)

 

NUite也有这样几个缺点

1.       不支持Debug,要安装TestDriven.NET才支持。

2.       不支持代码覆盖率的查看,要和NCover一起用。而VS的代码覆盖很清楚。

3.       不能自动生成测试代码,也许和CodeSmith一起用好些,不过后着要收费的。

 

补充一点:NCover生成的XML太大了,动不动IE就Crash了,(用NCoverExplorer更好,不过公司没有……)。今天找了半天,都没有找到办法让NCover只生成特定Namespace的数据的命令行参数。最后改了xsl,不显示Method级的XML,好了些。

 

 

VS UT最大的缺点——价格!只有VS Pro才支持UT,只有VSTS才支持代码覆盖。

 

还有人认为VSUT比较难以与CC.NET集成。虽然没有去试着在CC中直接使用VSUT,但是感觉应该是可以的。

 

再来看一下VS的价格。

 

 

With Premium MSDN

With Professional MSDN

Without MSDN

VS 2008 Team System

$10939

 

 

VS 2008 Professional

$2499

$1199

$799

VS 2008 Standard

 

 

$299

 

最新报价请参考:http://msdn.microsoft.com/en-us/aa700832.aspx

  

另外,ReSharper30天试用)、xUnit(开源)、MbUnit也都是UT的不错选择。

 

参考:http://stackoverflow.com/questions/92869/nunit-vs-visual-studio-2008s-test-projects-for-unit-testing

http://stackoverflow.com/questions/709/net-testing-framework-advice

http://stackoverflow.com/questions/1760/net-unit-testing-packages

 

posted on 2009-02-24 20:20  南柯之石  阅读(5188)  评论(2编辑  收藏  举报

导航