追求艺术的脚步
Be the change you want to see in the world.Things are always as hard as you think but always as easy as you do.

        测试驱动现在应该是比较普遍的概念了,我们一般都会用Nunit进行测试。但这样测试有两个不方便的地方,一是我们写好测试代码后要另开一个程序,也就是Nunit-gui.exe程序加载编译过后的测试代码,然后点击“Run”进行测试;二是我们即使在Nunit中测试通过了,也只是看到一个非常环保的绿条,知道我们的测试是通过了,但这并不能使我们在代码层上有更多了解,比如,你难道不想知道你的代码的使用率来改进你的程序?
        针对以上两个问题,我首先向大家介绍TestDriven.NET。你可以到http://www.testdriven.net/default.aspx上查看它的详细信息,你也可以到http://www.testdriven.net/download.aspx下载它,好像只有个人版是能免费下载的。它能将Nunit集成到Visual Studio.NET开发环境中,它也能将NCover(接下来将介绍)和NCoverExplorer(下面也会介绍)。按照网上的说法它支持各种版本的Visual Studio.NET,所以你不必担心兼容性冲突。当你安装了TestDriven.NET后,你会在开发环境的菜单里看到这个集成,如下图(这里显示的就是已安装了NCover的):

                                                                                            
        接下来要介绍的是NCover。它是用来测试代码的覆盖率的。你可以到http://ncover.org/site/看它的详细信息和下载它,目前的最新Beta版本是1.5.4。安装很简单,就不提了,举个例子怎么使用它。
        假如我写个非常简单的计算器,类如下(因为我看的网站上有现成的例子,先引来用了):

                                                                   

        它的WinForm如下:

                                                               

        这个WinForm的后台代码如下:

                                                               

        编译后就有了一个.exe文件。然后我就可以使用NCover了。
        当你看到安装后的NCover后,可能会有点失望,是的,它没有华丽的界面,而只是一个命令行工具,但它功能强大,能够分析哪些代码被执行过了和执行的频繁度,并能将这些信息显示出来。
        NCover的命令行语法是:
        

Usage: NCover /c [/a ] 

       
/c Command line to launch profiled application.
       
/a List of assemblies to profile. i.e. “MyAssembly1;MyAssembly2″
       
/v Enable verbose logging (show instrumented code)


 

        当NCover分析完你的代码,它会产生两个文件:一个是 coverage.log ,另一个是 coverage.xml。log文件包含了NCover分析程序时的信息,xml文件很重要,包含了程序的分析信息。你还能在安装后的文件里看到一个Coverage.xsl文件,有了它你就能用浏览器看分析出来的xml文件而不必再自己做xsl转换了。
        接下来我们使用NCover。下面是我输入的命令和NCover的输出:

 C:\Program Files\NCover>NCOVER.CONSOLE “…\dev\VS2005\Test\DDG\CalcApp\CalcApp\bin\Debug\CalcApp.exe”
NCover.Console v1.
5.4 - Code Coverage Analysis for .NET - http://ncover.org
Copyright (c) 2004-2005 Peter Waldschmidt 

Command: …\dev\VS2005\Test\DDG\Calc
App\CalcApp\bin\Debug\CalcApp.exe
Command Args:
Working Directory:
Assemblies:
Coverage Xml: Coverage.Xml
Coverage Log: Coverage.Log

Waiting 
for profiled application to connect…
******************* Program Output *******************
***************** End Program Output *****************

        当你打了命令NCover.Console “………  .exe”后,程序会调用出这个exe程序,然后你就可以使用这个exe程序的功能,当你觉的可以了,就关闭这个exe程序,那么NCover就会输出“End Program Output”的字样,然后xml文件就产生了。这里我还要很遗憾的告诉你,NCover不支持Web,我试过,结果如下图:

                                   
        程序分析完后的xml文件很大也很复杂,我们不可能去看这个文件。但你可以用IE来看,比较直观,如下图:

                                                               

        从这里你就可以看到结果了。
        但是这样看还不是很理想,有个很好的工具可以帮助你,那就是 NCoverExplorer ,你可以从http://www.kiwidude.com/dotnet/NCoverExplorer.zip下载。下载解压后,你只要打开里面的NCoverExplorer.exe文件,然后加载进NCover分析产生的xml文件,你会看到非常令你满意的程序分析结果,比如下面的图:

                                           

        每个类甚至每个类中方法的使用率都显示出来了,当你点击其中的方法,你还可以看到代码,它还用不同的颜色标识出了使用的代码。呵呵,真是个很好的工具。
        介绍到这里也差不多结束了,这个也只是概要介绍,有时间的话再向大家介绍更详细的应用和其它一些好的工具。希望这些工具能给你带来大的帮助!

 

posted on 2006-07-20 14:54  小笨笨  阅读(4677)  评论(21编辑  收藏  举报