Skip to content

8. 附录

8.1. 在哪里可以找到 Spring?

Spring 的主网站是 [http://www.springframework.org/]。这是 Java 版本的网站。正在开发中的 .NET 版本(2005 年 4 月)的网址为 [http://www.springframework.net/]。

Image

下载地址位于 [SourceForge]:

Image

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

Image

本文仅使用了文件夹 [bin] 中的内容:

Image

在使用 Spring 的 Visual Studio 项目中,必须系统地完成两项操作:

  • 将上述文件放入项目中的 [bin] 文件夹
  • 向项目中添加对程序集 [Spring.Core.dll] 的引用

8.2. 在哪里可以找到Nunit?

Nunit 的主网站是 [http://www.nunit.org/]。2005 年 4 月发布的版本是 2.2.0:

Image

请下载此版本并进行安装。安装过程会创建一个文件夹,其中包含测试版图形界面:

真正有价值的内容位于 [bin] 文件夹中:

Image

Image

上图中的箭头指向图形化测试工具。安装过程还向 Visual Studio 的程序集库中添加了新项,我们现在就来了解这些内容。

创建以下 Visual Studio 项目:

被测试的类位于 [Personne.vb] 中:

Image

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] 即可获得引用:

Image

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

Image

完成上述操作后,测试类 [NunitTestPersonne] 需导入命名空间 [NUnit.Framework]:

Imports NUnit.Framework

此时,测试类 [NunitTestPersonne] 的属性应被识别。

  • <Test()> 属性指定要测试的方法
  • <Setup()> 属性表示在每个被测方法之前执行的方法
  • <TearDown()> 属性表示在每次测试方法之后要执行的方法
  • 方法 Assert.AreEqual 用于测试两个 entités.Il 是否相等,此外还有许多其他 Assert.xx 类型的方法。
  • 实用程序 NUnit 会在任何 [Assert] 方法失败时立即停止被测试方法的执行并显示错误信息。否则,它将显示成功信息。

让我们配置项目以生成一个 DLL:

Image

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

Image

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

Image

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

Image

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

Image

方法测试通过时,左侧窗口中该方法旁边会显示一个绿色圆点。测试失败时则显示红色圆点。

右侧的 [Console.Out] 窗口显示了被测试方法生成的屏幕输出。在此,我们希望跟踪一个测试的执行过程:

1
2
3
4
setup test
début test
fin test
teardown test
  • 第 1 行表明属性方法 <Setup()> 在测试前被执行
  • 第 2-3 行由被测试的方法 [demo] 生成(参见上文代码)
  • 第 4 行显示属性方法 <TearDown()> 在测试后执行