Skip to content

8. 附录

8.1. 在哪里可以找到 Spring?

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

Image

下载站点位于 [SourceForge]:

Image

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

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 项目:

待测试的类位于 [Person.vb] 中:

Image

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]

在“解决方案资源管理器”中右键单击 [引用] 即可添加该引用:

Image

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

Image

完成此操作后,测试类 [NunitTestPersonne] 必须导入 [NUnit.Framework] 命名空间:

Imports NUnit.Framework

随后,测试类 [NunitTestPersonne] 的属性应被识别。

  • <Test()> 属性用于指定待测试的方法
  • <Setup()> 属性指定在每个待测方法之前执行的方法
  • <TearDown()> 属性指定在每个被测方法之后执行的方法
  • Assert.AreEqual 方法允许您测试两个实体的相等性。还有许多其他 Assert.xx 类型的方法。
  • 一旦 [Assert] 方法失败,NUnit 工具会立即停止被测方法的执行并显示错误信息。否则,它会显示成功信息。

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

Image

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

Image

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

Image

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

Image

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

Image

左侧窗口中,方法旁边的绿色圆点表示该方法的测试成功,红色圆点表示测试失败。

右侧的 [Console.Out] 窗口显示被测试方法生成的屏幕输出。在此,我们希望跟踪测试的进度:

1
2
3
4
setup test
test start
end of test
test teardown
  • 第 1 行显示 <Setup()> 属性方法在测试开始前被执行
  • 第 2–3 行是由正在被测试的 [demo] 方法生成的(参见上文代码)
  • 第 4 行表明 <TearDown()> 属性方法在测试结束后执行