用Delphi2005和DUnit搭建敏捷开发平台

谭大明白

谭大明白

2016-02-19 18:25

下面请跟着图老师小编一起来了解下用Delphi2005和DUnit搭建敏捷开发平台,精心挑选的内容希望大家喜欢,不要忘记点个赞哦!
 

  之前用的是Java那一套东西,有Eclipse什么都搞定了。现在因为要用Delphi改一个即时通讯软件的缘故,想着怎么能把重构和单元测试那一套搬到Delphi这边来。书上说给现有的代码加单元测试能够加深对代码的理解,并且可以作为改善代码的基础,这不正是我要做的事情吗?于是,为了搭建这么一个敏捷平台,我以Delphi2005和DUnit进行了一点小小的尝试,并把结果记录于下,与大家分享。
  
  1、下载Delphi2005
  因为Borland公司在中国不出售专业版本,鉴于架构师和企业版的天价,所以只能从网络上下载一个D版的做个人使用。Delphi2005体积比较大,而且Update1也需要CD,所以推荐用BT下载2CD版本。种子的地址如下:
  http://www.delphifans.com/SoftView/821.html
  
  2、下载Delphi2005的sp1
  据说打过这个补丁之后能快一些,但是这个补丁安装起来可慢了,还需要用光盘。下载地址如下:
  http://www.delphifans.com/SoftView/970.html
  
  3、下载DUnit
  https://sourceforge.net/projects/dunit/
  
  4、安装Delphi2005+sp1
  注意一下keygen中有一个register以及安装的时候一定要同时安装.net和win32版本的delphi,C#builder则无所谓。因为如果只安装win32版本会导致重构功能不可用(这是delphi2005的一个bug,表现就是用重构的时候出现.net的异常窗口)。
  
  5、精简Delphi2005
  因为上一步的时候同时安装了.net版本,导致delphi启动的时候变得非常慢。这个可以通过修改注册表,删掉一些IDE的包来实现。具体的做法是在Delphi的快捷方式目标后面加上参数-rxxx,也就是BDS.exe -rxxx。这个xxx任由你指定,然后你就会在HKEY_CURRENT_USERSoftwareBorlandxxx(这个就是你选定的名字xxx)3.0Known IDE Packages中发现那些该死的包。注意不能和网络上别的win32纯化分子那样删得太干净了,那样重构就没法用了。我自己试验多次之后得出的一个比较精简的列表如下
  "$(BDS)Binvclmenudesigner90.bpl"="(Untitled)"
  "$(BDS)Binwin32debugproide90.bpl"="(Untitled)"
  "$(BDS)Binhtmide90.bpl"="HTML Designer Package"
  "$(BDS)Biniteidew3290.bpl"="Borland Integrated Translation Environment for Win32"
  "$(BDS)BinSrcManIDE90.bpl"="(Untitled)"
  "$(BDS)Binodoide90.bpl"="Borland ToDo"
  "$(BDS)Binhtmlhelp290.bpl"="Borland HtmlHelp Viewer"
  "$(BDS)Binidefilefilters90.bpl"="IDE File filters"
  "$(BDS)Binstartpageide90.bpl"="Borland Start Page IDE Package"
  "$(BDS)Binefactoride90.bpl"="Borland Core Refactoring Package"
  "$(BDS)Bindbkdebugide90.bpl"="(Untitled)"
  "$(BDS)Binexceptiondiag90.bpl"="(Untitled)"
  "$(BDS)indeployide90.bpl"="Deployment Manager"
  "$(BDS)Binplugview90.bpl"="Pluggable Tree View Package"
  "$(BDS)Bincoreproide90.bpl"="Core IDE Pro Package"
  "$(BDS)BinIDETools90.bpl"="Build Tools"
  "$(BDS)Binunittestide90.bpl"="(Untitled)"
  "$(BDS)Binhistoryide90.bpl"="(Untitled)"
  "$(BDS)Binhtmltidy90.bpl"="HTML Tidy Formatter"
  "$(BDS)BinHTMLFmt90.bpl"="HTML Internal Formatter"
  "$(BDS)Binmlcc90.bpl"="Markup Language Code Completion Package"
  "$(BDS)Bindelphivclide90.bpl"="Delphi VCL Designer IDE Package"
  "$(BDS)Bindelphicoreproide90.bpl"="(Untitled)"
  "$(BDS)Binwin32debugide90.bpl"="(Untitled)"
  "$(BDS)Binhtmlide90.bpl"="(Untitled)"
  "$(BDS)Bindelphide90.bpl"="Delphi Win32 IDE Personality"
  "$(BDS)Binmtspro90.bpl"="(Untitled)"
  "$(BDS)Binmtsent90.bpl"="(Untitled)"
  "$(BDS)Biniteidenet90.bpl"="Borland Integrated Translation Environment for .NET"
  "$(BDS)BinNetImportWiz90.bpl"="(Untitled)"
  "$(BDS)BinDataExplorer90.bpl"="(Untitled)"
  虽然启动还是有些慢,不过总算能忍受了。
  
  6、编译并安装DUnit
  用你知道的办法把DUnit编译成dcu,放入你指定的目录。并把该目录添加到Delphi的Tools-Environment Options-Delphi Options-Library-win32的Library Path中。
  另外把DUnit.exe给编译出来
  
  7、建立工程
  我推荐的方式是写Delphi程序的时候把界面和后台分开,具体就是开两个项目,一个普通的VCL项目,一个DLL项目。不,不,我的意思并不是让你用DLL这种方式来共享代码。这个DLL项目包含文件是所有后台的内容,以及对后台的测试。产生的DLL给DUnit用,DUnit能够从其中读出测试并运行。而实际上GUI部分的那个工程是包含了所有的文件的,也就是说分与其说分两个工程,不如说是在原来的单个工程的基础上加上了一个专门用于测试的DLL工程。
  项目分为三块:GUI,Core,TestCore。工程一包括GUI+Core,工程二包括Core+TestCore。工程一的输出是Win32Exe程序。工程二输出是Win32Dll程序。
  然后可以把这两个工程放到一个Project Group中。
  
  8、编写测试
  工程一和普通写Dephi程序没有什么两样,要记得把GUI的功能分出来后台,让后台Testable。测试都是写在工程二中的,我把工程二的名字就叫做Core。下面就在Core中添加一个最基本的测试,检查1+1是不是等于2。
  建立TestCase
  
  unit TestBasic;

  interface

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

  uses
    TestFramework;

  type
    TBasic = class
    public
      function Add(a, b: integer): integer;
    end;

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

    TTestBasic = class(TTestCase)
    private
      FBasic: TBasic;
    public
      procedure SetUp; override;
      procedure TearDown; override;
    published
      procedure TestAdd;
    end;

  implementation

  function TBasic.Add(a, b: integer): integer;
  begin
    Result := a + b;
  end;

  procedure TTestBasic.SetUp;
  begin
    FBasic := TBasic.Create;
  end;

  procedure TTestBasic.TearDown;
  begin
    FBasic.Free;
  end;

  procedure TTestBasic.TestAdd;
  begin
    CheckEquals(2, FBasic.Add(1, 1));
  end;

  initialization
    RegisterTest('', TTestBasic.Suite);

  end.
  
  修改Core.bdsproj(KAO,什么古怪的后缀啊)
  把begin end.改成
  exports
    RegisteredTests name 'Test';
  end.
  并在Uses部分添加TestFramework。
  
  DUnit就是通过这个export的函数在dll中找出我们注册的TestCase的。
  
  9、运行DUnit
  把DUnit添加到Tools菜单下吧,那样方便许多。只是参数不好填写。我没有用里面的macro,直接填了绝对路径。如果你和我一样这样直接填的绝对路径,那么从Tools菜单下选DUnit就能直接看到一个测试列表了,点运行就会看到一个绿灯亮起了。
  如果你不是把DUnit添加到Tools菜单,那么就要从File-Load Test的文件选择窗口中找到Core项目编译出来的dll,core.dll。
  
  ————
  
  至此重构功能和单元测试都有了。剩下的就是给既有代码添加测试,然后慢慢重构的事情了。
  


展开更多 50%)
分享

猜你喜欢

用Delphi2005和DUnit搭建敏捷开发平台

编程语言 网络编程
用Delphi2005和DUnit搭建敏捷开发平台

Delphi2005和DUnit搭建敏捷开发平台记录

Delphi
Delphi2005和DUnit搭建敏捷开发平台记录

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

delphi2005探讨之二

编程语言 网络编程
delphi2005探讨之二

delphi2005探讨之四

编程语言 网络编程
delphi2005探讨之四

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

Delphi2005(DiamondBack)使用体验

编程语言 网络编程
Delphi2005(DiamondBack)使用体验

Borland最新版开发工具Delphi2005抢先预览

Delphi
Borland最新版开发工具Delphi2005抢先预览

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Delphi中的DLL封装和调用对象编写碰到的问题

Delphi中的DLL封装和调用对象编写碰到的问题

在Delphi中自己建立交叉表

在Delphi中自己建立交叉表
下拉加载更多内容 ↓