一、NUnit简介

NUnit是一个单元测试框架,专门针对于.NET来写的。其实在前面有JUnit(Java),CPPUnit(C++),他们都是
xUnit的一员。最初,它是从JUnit而来,现在的版本是2.2.接下来我所用的都是基于这个版本。NUnit最初是由James W. Newkirk, Alexei A. Vorontsov 和Philip A. Craig, 后来开发团队逐渐庞大起来。在开发过程中, Kent Beck 和Erich Gamma也提供了许多帮助。NUnit是xUnit家族种的第4个主打产品,完全由C#语言来编写,并且编写时充分利用了许多.NET的特性,比如反射,客户属性等等.。最重要的一点是它适合于所有.NET语言。

NUnit的官方网站:http://www.nunit.org,需要了解历史和下载最新版本的读者可以登录其官方网站。本文使用NUnit 2.6版本进行详解。


二、NUnit在.NET中的应用

2.1、NUnit GUI的布局(如下图所示)

在右边面板的中间,可以看到测试进度条。进度条的颜色反映了测试执行的状态:
  • 绿色: 表示测试通过;

  • ×××: 表示某些测试忽略;

  • 红色 :表示测试失败;

底部的状态条表示下面的状态:
  • 状态.说明了现在运行测试的状态。当所有测试完成时,状态变为Completed;

    运行测试中,状态是Running: <test-name> (<test-name>是正在运行的测试名称)。

  • Test Cases说明加载的程序集中测试案例的总个数。这也是测试树里叶子节点的个数。

  • Tests Run已经完成的测试个数。

  • Failures :到目前为止,所有测试中失败的个数.

  • Time :显示运行测试时间(以秒计)

File主菜单有以下内容:
  • New Project:允许你创建一个新工程。工程是一个测试程序集的集合。这种机制让你组织多个测试程序集,并把他们作为一个组对待。

  • Open :加载一个新的测试程序集,或一个以前保存的NUnit工程文件。

  • Close:关闭现在加载的测试程序集或现在加载的NUnit工程。

  • Save :保存现在的Nunit工程到一个文件。如果正工作单个程序集,本菜单项允许你创建一个新的NUnit工程,并把它保存在文件里。

  • Save As:允许你将现有NUnit工程作为一个文件保存。

  • Reload: 强制重载现有测试程序集或NUnit工程。NUnit-Gui自动监测现加载的测试程序集的变化。

当程序集变化时,测试运行器重新加载测试程序集。(当测试正运行时,现在加载的测试程序集不会重新加载。在测试运行之间测试程序集仅可以重新加载。一个忠告:如果测试程序集依赖另外一个程序集,测试运行器不会观察任何依赖的程序集。对测试运行器来说,强制一个重载使全部依赖的程序集变化可见。
  • Recent Files: 说明5个最近在NUnit中加载的测试程序集或NUnit工程(这个列表在Windows注册表,由每个用户维护,因此如果你共享你的PC,你仅看到你的测试)。最近程序集的数量可以使用Options菜单项修改,可以访问Tool主菜单。

  • Exit:退出。

View菜单有以下内容:

  • Expand:一层层扩展现在树中所选节点

  • Collapse :折叠现在树中选择的节点

  • Expand All:递归扩展树中所选节点后的所有节点

  • Collapse All:递归折叠树中所选节点后的所有节点

  • Expand Fixtures:扩展树中所有代表测试fixture的节点。

  • Collapse Fixtures: 折叠树中所有代表测试fixture的节点。

  • Properties显示树中现所选节点的属性。

Tools 菜单有以下内容:

  • Save Results as XML:作为一XML文件保存运行测试的结果。

  • Options:让你定制NUnit的行为。

现在看看右边,你已经熟悉Run按钮和进度条。这里还有一个紧跟Run按钮的Stop按钮:
点击这个按钮会终止执行正运行的测试。
进度条下面是一个文本窗口,在它上方,由以下4个标签:
  • Errors and Failures: 窗口显示失败的测试。

  • Tests Not Run: 窗口显示没有得到执行的测试。

  • Text Output:窗口显示运行测试打印到Console.Error输出流的文本消息。

集成到VS 2010中进行测试

通过图中的设置,我们每次按F5或者调试运行项目的时候,就会自动启动NUnit.exe,并且加载生成

的DLL文件或exe文件,只需要单击“Run”按钮就可以测试了,不用再去手工启动NUnit.exe。

2.2、常用属性的介绍

  • TestFixture

    用来标识类,表示这个类有可能包含用于测试的方法。

  • Test

    用来标识方法,表示这个方法需要进行测试。

  • SetUp

       用来标识方法,在开始所有的测试之前执行,用来在测试前初始化一些资源,比如初始化类。

  • TearDown

       用来标识方法,在所有的测试完成之后执行,用来释放一些资源。

  • Ignore

       用来标识方法,指示这个方法由于某些原因暂时不需要测试,比如没有完成相关代码。

其他属性的介绍,请参考文档:http://www.36sign.com/nunit/index.html