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

下载地址位于 [SourceForge]:

下载上述压缩包后,请解压:

本文仅使用了文件夹 [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 项目:
被测试的类位于 [Personne.vb] 中:

Public Class Personne
' 私有字段
Private _nom As String
Private _age As Integer
' 默认构造函数
Public Sub New()
End Sub
' 与私有字段关联的属性
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
' 标识符字符串
Public Overrides Function tostring() As String
Return String.Format("[{0},{1}]", nom, age)
End Function
' init 方法
Public Sub init()
Console.WriteLine("init personne {0}", Me.ToString)
End Sub
' close 方法
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
' 被测试对象
Private personne1 As Personne
<SetUp()> _
Public Sub init()
' 创建 Personne 实例
personne1 = New Personne
' 日志
Console.WriteLine("setup test")
End Sub
<Test()> _
Public Sub demo()
' 屏幕日志
Console.WriteLine("début test")
' 初始化person1
With personne1
.nom = "paul"
.age = 10
End With
' 测试
Assert.AreEqual("paul", personne1.nom)
Assert.AreEqual(10, personne1.age)
' 屏幕日志
Console.WriteLine("fin test")
End Sub
<TearDown()> _
Public Sub destroy()
' 跟踪
Console.WriteLine("teardown test")
End Sub
End Class
有几点需要注意:
- 方法具有诸如<Setup()>、<TearDown()>等属性……
- 要使这些属性被识别,必须满足以下条件:
- 项目必须引用 [nunit.framework.dll] 程序集
- 测试类导入 [NUnit.Framework] 命名空间
在解决方案资源管理器中右键单击 [References] 即可获得引用:
![]() | ![]() |

如果 [Nunit] 的安装成功,则 [nunit.framework.dll] 应出现在所提供的列表中。只需双击该程序集即可将其添加到项目中:

完成上述操作后,测试类 [NunitTestPersonne] 需导入命名空间 [NUnit.Framework]:
此时,测试类 [NunitTestPersonne] 的属性应被识别。
- <Test()> 属性指定要测试的方法
- <Setup()> 属性表示在每个被测方法之前执行的方法
- <TearDown()> 属性表示在每次测试方法之后要执行的方法
- 方法 Assert.AreEqual 用于测试两个 entités.Il 是否相等,此外还有许多其他 Assert.xx 类型的方法。
- 实用程序 NUnit 会在任何 [Assert] 方法失败时立即停止被测试方法的执行并显示错误信息。否则,它将显示成功信息。
让我们配置项目以生成一个 DLL:

生成的 DLL 将命名为 [nunit-demos-1.dll],并默认放置在项目的 [bin] 文件夹中。生成我们的项目。我们在 [bin] 文件夹中得到:

现在启动图形化测试工具 Nunit。请注意,该工具位于 <Nunit>\bin 目录下,名称为 [nunit-gui.exe]。<Nunit> 代表 [Nunit] 的安装目录。界面如下所示:

使用菜单选项 [File/Open] 加载我们项目中的 DLL [nunit-demos-1.dll]:

[Nunit] 能够自动检测加载的 DLL 中包含的测试类。 在此,它找到了类 [NunitTestPersonne]。随后,它会显示该类中所有带有 <Test()> 属性的方法。通过按钮 [Run],可以对所选对象启动测试。 如果该对象是类 [NunitTestPersonne],则会测试所有显示的方法。可以通过选择特定方法并调用 [Run] 来请求测试该方法。现在让我们执行类:

方法测试通过时,左侧窗口中该方法旁边会显示一个绿色圆点。测试失败时则显示红色圆点。
右侧的 [Console.Out] 窗口显示了被测试方法生成的屏幕输出。在此,我们希望跟踪一个测试的执行过程:
- 第 1 行表明属性方法 <Setup()> 在测试前被执行
- 第 2-3 行由被测试的方法 [demo] 生成(参见上文代码)
- 第 4 行显示属性方法 <TearDown()> 在测试后执行

