8. 附录
8.1. 在哪里可以找到 Spring?
Spring 的主要网站是 [http://www.springframework.org/]。这是 Java 版本的网站。目前正在开发中的 .NET 版本(2005 年 4 月),可访问 [http://www.springframework.net/]。

下载站点位于 [SourceForge]:

下载上述 zip 文件后,请将其解压:

在本文档中,我们仅使用了 [bin] 文件夹中的内容:

在使用 Spring 的 Visual Studio 项目中,您必须始终执行以下两项操作:
- 将上述文件放置在项目的 [bin] 文件夹中
- 向项目添加对 [Spring.Core.dll] 程序集的引用
8.2. 在哪里可以找到 NUnit?
NUnit 的官方网站是 [http://www.nunit.org/]。2005 年 4 月可用的版本是 2.2.0:

下载此版本并进行安装。安装过程会生成一个包含图形化测试界面的文件夹:
有趣的部分在 [bin] 文件夹中:


上方的箭头指向图形化测试工具。安装过程还向 Visual Studio 程序集存储库添加了新项目,我们现在将对此进行探索。
让我们创建以下 Visual Studio 项目:
待测试的类位于 [Person.vb] 中:

Public Class Personne
' private fields
Private _nom As String
Private _age As Integer
' default builder
Public Sub New()
End Sub
' properties associated with private fields
Public Property nom() As String
Get
Return _nom
End Get
Set(ByVal Value As String)
_nom = Value
End Set
End Property
Public Property age() As Integer
Get
Return _age
End Get
Set(ByVal Value As Integer)
_age = Value
End Set
End Property
' identity chain
Public Overrides Function tostring() As String
Return String.Format("[{0},{1}]", nom, age)
End Function
' init method
Public Sub init()
Console.WriteLine("init personne {0}", Me.ToString)
End Sub
' close method
Public Sub close()
Console.WriteLine("destroy personne {0}", Me.ToString)
End Sub
End Class
测试类位于 [NunitTestPersonne-1.vb] 中:
Imports System
Imports NUnit.Framework
<TestFixture()> _
Public Class NunitTestPersonne
' object tested
Private personne1 As Personne
<SetUp()> _
Public Sub init()
' create an instance of Person
personne1 = New Personne
' log
Console.WriteLine("setup test")
End Sub
<Test()> _
Public Sub demo()
' log screen
Console.WriteLine("début test")
' init person1
With personne1
.nom = "paul"
.age = 10
End With
' tests
Assert.AreEqual("paul", personne1.nom)
Assert.AreEqual(10, personne1.age)
' log screen
Console.WriteLine("fin test")
End Sub
<TearDown()> _
Public Sub destroy()
' follow-up
Console.WriteLine("teardown test")
End Sub
End Class
需要注意以下几点:
- 方法被赋予了诸如 <Setup()>、<TearDown()> 等属性
- 要使这些属性被识别,必须满足以下条件:
- 项目引用了程序集 [nunit.framework.dll]
- 测试类导入了命名空间 [NUnit.Framework]
在“解决方案资源管理器”中右键单击 [引用] 即可添加该引用:
![]() | ![]() |

如果 [NUnit] 安装成功,列表中应包含 [nunit.framework.dll] 程序集。只需双击该程序集即可将其添加到项目中:

完成此操作后,测试类 [NunitTestPersonne] 必须导入 [NUnit.Framework] 命名空间:
随后,测试类 [NunitTestPersonne] 的属性应被识别。
- <Test()> 属性用于指定待测试的方法
- <Setup()> 属性指定在每个待测方法之前执行的方法
- <TearDown()> 属性指定在每个被测方法之后执行的方法
- Assert.AreEqual 方法允许您测试两个实体的相等性。还有许多其他 Assert.xx 类型的方法。
- 一旦 [Assert] 方法失败,NUnit 工具会立即停止被测方法的执行并显示错误信息。否则,它会显示成功信息。
让我们配置项目以生成 DLL:

生成的 DLL 将命名为 [nunit-demos-1.dll],并默认放置在项目的 [bin] 文件夹中。现在来构建我们的项目。在 [bin] 文件夹中,我们会看到以下内容:

现在,让我们启动 Nunit 图形化测试工具。请记住,该工具位于 <Nunit>\bin 目录下,文件名为 [nunit-gui.exe]。<Nunit> 指的是 [Nunit] 的安装目录。我们将看到以下界面:

现在,让我们使用 [文件/打开] 菜单选项,从项目中加载 [nunit-demos-1.dll] DLL:

[Nunit] 可以自动检测加载的 DLL 中包含的测试类。在此,它找到了 [NunitTestPersonne] 类。随后,它会显示该类中所有带有 <Test()> 属性的方法。[运行] 按钮允许您对所选对象运行测试。如果这是 [NunitTestPersonne] 类,则所有显示的方法都会被测试。 您可以通过选中特定方法并点击 [Run] 来测试该方法。让我们运行该类:

左侧窗口中,方法旁边的绿色圆点表示该方法的测试成功,红色圆点表示测试失败。
右侧的 [Console.Out] 窗口显示被测试方法生成的屏幕输出。在此,我们希望跟踪测试的进度:
- 第 1 行显示 <Setup()> 属性方法在测试开始前被执行
- 第 2–3 行是由正在被测试的 [demo] 方法生成的(参见上文代码)
- 第 4 行表明 <TearDown()> 属性方法在测试结束后执行

