NUnit学习笔记之Delphi 2005篇

2008-04-09 04:20:43来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

一、简介
  NUnit是一款堪与JUnit齐名的开源的回归测试框架,供.net开发人员做单元测试之用,可以从
www.nunit.org网站上免费获得,最新版本是2.2.0。在下载时,会看到NUnit 2.2.0版有NUnit-2.2.0.msi、NUnit-2.2.0-mono.zip、NUnit-2.2.0-src.zip等三个文件的下载连接,这三个连接前边有说明,分别是win、mono以及src,这说明前两个文件分别是供.net平台和Mono平台使用的,而最后一个是源码。这里需要的是NUnit-2.2.0.msi,而且该安装包中已含有源码。下载NUnit-2.2.0.msi后,双击该文件,然后按提示进行安装,这样系统中就具备NUnit环境了。
二、配置类库
  这次我选择的IDE是Borland的Delphi 2005(以下简称delphi)。打开后点击菜单"File"->"New"->"Other",打开"New Items"对话框:

在该对话框中,选择"C# Projects"或"Delphi for .NET Projects",虽然两者在操作上会稍有差异,但其实相差并不很大。然后选择其中的"Console Application",点击"OK"按钮。如果选择的是C#,那么会弹出一个"New Application"对话框:

请在其中设置项目名称和保存位置,我的项目名称为NUnitCS,位置为本机的G:\MDZPCK\Borland\MySY\NUnitCS,设置好后,点击"OK"按钮。如果选择的是Delphi,那么跟以前版本的delphi一样,项目会直接被创建,而不弹出任何对话框。此时请按下快捷键Ctrl S,打开Save对话框,对项目进行保存,这是一个良好的习惯。我将自己的项目文件名称设为NUnitOP.bdsproj(因为Delphi使用的是Object Pascal语言嘛),该文件名就是项目名称,保存路径为G:\MDZPCK\Borland\MySY\NUnitOP。
  项目创建后,点击菜单"Project"->"Add Reference",打开"Add Reference"对话框:

在".NET Assembles"选项卡中找到组件名称为nunit.framework的一项,双击添加到"New References"中,别的组件不用管,然后点击"OK"按钮,此时在项目中就可以使用NUnit类库了。
三、编写用于测试的类
  用于测试的类很简单,名为Book,只有id和name两个属性,这两个属性将分别用于两个用例当中。
  下面开始编写,请点击菜单"File"->"New"->"Other",打开"New Items"对话框:

在该对话框中选择"C# Projects"或"Delphi for .NET Projects"下的"New Files",然后选中"Class",点击"OK"按钮。此时Class文件虽然在工程中已生成,但尚未保存在硬盘上,所以请先按下快捷键Ctrl S,我将文件命名为Book.cs和Book.pas。这里插一句,我感觉delphi在文件保存这方面做的很差劲,如果没有经常保存文件的习惯,搞不好真的会出问题。
  类创建后,需要修改代码,下边是C#代码:
  using System;
  
  
namespace NUnitCS
  {
    /// <summary>
    /// Summary description for Class1.
    /// </summary>
    public class Book
    {
      private string pid = null;
      private string pname = null;
      
      public string id
      {
        get
        {
          return pid;
        }
        
        set
        {
          pid = value;
        }
      }
      
      public string name
      {
        get
        {
          return pname;
        }
        
        set
        {
          pname = value;
        }
      }
    }
  }
没什么可说的吧?下边是Delphi代码:
  unit Book;
  
  interface
  
  type
    TBook = class
    private
      pid : string;
      pname : string;
      
      
function GetId(): string;
      procedure SetId(value: string);
      
      
function GetName(): string;
      procedure SetName(value: string);
    public
      constructor Create;
      property id : string read GetId write SetId;
      property name : string read GetName write SetName;
  end;
  
  implementation
  
  constructor TBook.Create();
  begin
    inherited Create;
  end;
  
  function TBook.GetId(): string;
  begin
    GetId := pid;
  end;
  procedure TBook.SetId(value: string);
  begin
    pid := value;
  end;
  
  function TBook.GetName(): string;
  begin
    GetName := pname;
  end;
  procedure TBook.SetName(value: string);
  begin
    pname := value;
  end;
  
  end.
可以看到,和以前版本的Delphi代码相差不多,都是固定格式。这里可能引起费解的有两点:一个是属性,在Delphi中定义属性必须先为这个属性声明一个作为get访问器的函数和一个作为set访问器的过程,并实现之,然后使用property语句来定义属性,并将get访问器和set访问器与这两个函数和过程相关联。注意,这里建议将函数和过程声明在private部分,这样在调用时,就会只看到属性,而不会看到这两个函数和过程了。另一个费解的问题是,Book是类型还是命名空间。其实Book是命名空间,TBook才是类型,这种情况与Delphi文件的格式有关。在Delphi中,每建立一个文件都会相应建立一个命名空间,如果想让多个类在一个命名空间下,就需要把这几个类建在一个文件中,但这不符合Delphi的编码风格。最后,别忘了定义一个构造函数,Delphi是不会默认提供的。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:实现Lucas-Kanade光流计算的Delphi类

下一篇:Delphi 2006(DeXter)