多程序集支持

从2.1版本开始,NUnit已经可以在控制台以及GUI运行器里加载来自多个程序集的测试套件。它的实现是基于一个adhoc的基础上,或通过创建NUnit项目并保存为‘.nunit’类型的文件实现的。不管是哪一种情况,都会构建一个上层(top-level)的套件,它包含了每个程序集的根套件。测试的运行和报告和单个程序集一样。

Adhoc使用

使用控制台运行器时,可以在命令行里简单的指定他们的名字来运行程序集。参看NUnit控制台命令行选项获取本实例的使用方法。

gui运行器不支持在命令行里指定多程序集。虽说如此,你可以加载单个程序集,然后使用Project菜单加入其他的程序集。另外,你也可以将多个程序集拖进树视图的面板里,这种方式中,它们将会替代任何已经加载的程序集。

NUnit测试工程

运行多个程序集的测试可以通过NUnit测试项目来完成。这些文件都是以.nunit来扩展,并且包含了加载的程序集信息。接下来是一个假定的测试工程文件的例子:

<NUnitProject>
  <Settings activeconfig="Debug"/>
  <Config name="Debug">
    <assembly path="LibraryCore\bin\Debug\Library.dll"/>
    <assembly path="LibraryUI\bin\Debug\LibraryUI.dll"/>
  </Config>
  <Config name="Release">
    <assembly path="LibraryCore\bin\Release\Library.dll"/>
    <assembly path="LibraryUI\bin\Release\LibraryUI.dll"/>
  </Config>
</NUnitProject>

本工程包含了2个配置,每个配置都包含了2个程序集。当前使用的是Debug配置。缺省的,程序集使用包含此文件的目录夹作为ApplicationBase。PrivateBinPath会自动设置为 LibraryCore\bin\Debug;LibraryUI\bin\Debug或相应的发布路径 。XML属性可以用来为ApplicationBase,Configuration File 以及 PrivateBinPath指定一个非缺省值 。Project Editor可以用来创建或修改NUnit工程。

甚至当你正在运行单个测试程序集时,NUnit创建一个内部工程来包含该程序集。如果你正使用GUI,你可保存该工程,编辑它,添加其他的程序集等。注意GUI不会显示这个内部工程,除非你以某种方式添加程序集或修改它。

如果你使用Visual Studio支持加载Visual Studio .NET工程或解决方案文件 ,NUnit将他们内部转化为Test工程。和其他内部工程 一样,这些测试工程不会自动保存,但是可以使用File菜单来保存他们。

加载和运行

在过去,测试编写人员可以依赖当前目录,这些目录被设置为包含单个加载的程序集的目录。为了兼容,不管何时运行程序集的测试,NUnit继续将当前目录设置为包含这些程序集的目录。

除此之外,因为有些程序集可能依赖相同目录下的非托管dll,因此当前的目录也可以设置为程序集加载时候时程序集的目录。尽管这样,在多个程序集引用了相同非托管程序集的情况下,这也许还不够,用户需要将包含非托管dll的目录放在那个路径之上。