Chinaunix首页 | 论坛 | 博客
  • 博客访问: 16496353
  • 博文数量: 5645
  • 博客积分: 9880
  • 博客等级: 中将
  • 技术积分: 68081
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-28 13:35
文章分类

全部博文(5645)

文章存档

2008年(5645)

我的朋友

分类:

2008-04-28 20:50:27

下载本文示例代码
  之前用的是Java那一套东西,有Eclipse什么都搞定了。现在因为要用Delphi改一个即时通讯软件的缘故,想着怎么能把重构和单元测试那一套搬到Delphi这边来。书上说给现有的代码加单元测试能够加深对代码的理解,并且可以作为改善代码的基础,这不正是我要做的事情吗?于是,为了搭建这么一个敏捷平台,我以Delphi2005和DUnit进行了一点小小的尝试,并把结果记录于下,与大家分享。   1、下载Delphi2005   因为Borland公司在中国不出售专业版本,鉴于架构师和企业版的天价,所以只能从网络上下载一个D版的做个人使用。Delphi2005体积比较大,而且Update1也需要CD,为避免麻烦我就不直接提供下载地址了,有兴趣的朋友可以用google搜一下,肯定会有所的。  2、下载Delphi2005的sp1   据说打过这个补丁之后能快一些,但是这个补丁安装起来可慢了,还需要用光盘。下载地址如下:   3、下载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_USER\Software\Borland\xxx(这个就是你选定的名字xxx)\3.0\Known IDE Packages中发现那些该死的包。注意不能和网络上别的win32纯化分子那样删得太干净了,那样重构就没法用了。我自己试验多次之后得出的一个比较精简的列表如下 "$(BDS)\\Bin\\vclmenudesigner90.bpl"="(Untitled)" "$(BDS)\\Bin\\win32debugproide90.bpl"="(Untitled)" "$(BDS)\\Bin\\htmide90.bpl"="HTML Designer Package" "$(BDS)\\Bin\\iteidew3290.bpl"="Borland Integrated Translation Environment for Win32" "$(BDS)\\Bin\\SrcManIDE90.bpl"="(Untitled)" "$(BDS)\\Bin\\todoide90.bpl"="Borland ToDo" "$(BDS)\\Bin\\htmlhelp290.bpl"="Borland HtmlHelp Viewer" "$(BDS)\\Bin\\idefilefilters90.bpl"="IDE File filters" "$(BDS)\\Bin\\startpageide90.bpl"="Borland Start Page IDE Package" "$(BDS)\\Bin\\refactoride90.bpl"="Borland Core Refactoring Package" "$(BDS)\\Bin\\dbkdebugide90.bpl"="(Untitled)" "$(BDS)\\Bin\\exceptiondiag90.bpl"="(Untitled)" "$(BDS)\\bin\\deployide90.bpl"="Deployment Manager" "$(BDS)\\Bin\\plugview90.bpl"="Pluggable Tree View Package" "$(BDS)\\Bin\\coreproide90.bpl"="Core IDE Pro Package" "$(BDS)\\Bin\\IDETools90.bpl"="Build Tools" "$(BDS)\\Bin\\unittestide90.bpl"="(Untitled)" "$(BDS)\\Bin\\historyide90.bpl"="(Untitled)" "$(BDS)\\Bin\\htmltidy90.bpl"="HTML Tidy Formatter" "$(BDS)\\Bin\\HTMLFmt90.bpl"="HTML Internal Formatter" "$(BDS)\\Bin\\mlcc90.bpl"="Markup Language Code Completion Package" "$(BDS)\\Bin\\delphivclide90.bpl"="Delphi VCL Designer IDE Package" "$(BDS)\\Bin\\delphicoreproide90.bpl"="(Untitled)" "$(BDS)\\Bin\\win32debugide90.bpl"="(Untitled)" "$(BDS)\\Bin\\htmlide90.bpl"="(Untitled)" "$(BDS)\\Bin\\delphide90.bpl"="Delphi Win32 IDE Personality" "$(BDS)\\Bin\\mtspro90.bpl"="(Untitled)" "$(BDS)\\Bin\\mtsent90.bpl"="(Untitled)" "$(BDS)\\Bin\\iteidenet90.bpl"="Borland Integrated Translation Environment for .NET" "$(BDS)\\Bin\\NetImportWiz90.bpl"="(Untitled)" "$(BDS)\\Bin\\DataExplorer90.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; interfaceuses TestFramework; type  TBasic = class public  function Add(a, b: integer): integer; end; TTestBasic = class(TTestCase) private  FBasic: TBasic; public  procedure SetUp; override;  procedure TearDown; override;  published  procedure TestAdd; end; implementationfunction 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。   至此重构功能和单元测试都有了。剩下的就是给既有代码添加测试,然后慢慢重构的事情了。   之前用的是Java那一套东西,有Eclipse什么都搞定了。现在因为要用Delphi改一个即时通讯软件的缘故,想着怎么能把重构和单元测试那一套搬到Delphi这边来。书上说给现有的代码加单元测试能够加深对代码的理解,并且可以作为改善代码的基础,这不正是我要做的事情吗?于是,为了搭建这么一个敏捷平台,我以Delphi2005和DUnit进行了一点小小的尝试,并把结果记录于下,与大家分享。   1、下载Delphi2005   因为Borland公司在中国不出售专业版本,鉴于架构师和企业版的天价,所以只能从网络上下载一个D版的做个人使用。Delphi2005体积比较大,而且Update1也需要CD,为避免麻烦我就不直接提供下载地址了,有兴趣的朋友可以用google搜一下,肯定会有所的。  2、下载Delphi2005的sp1   据说打过这个补丁之后能快一些,但是这个补丁安装起来可慢了,还需要用光盘。下载地址如下:   3、下载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_USER\Software\Borland\xxx(这个就是你选定的名字xxx)\3.0\Known IDE Packages中发现那些该死的包。注意不能和网络上别的win32纯化分子那样删得太干净了,那样重构就没法用了。我自己试验多次之后得出的一个比较精简的列表如下 "$(BDS)\\Bin\\vclmenudesigner90.bpl"="(Untitled)" "$(BDS)\\Bin\\win32debugproide90.bpl"="(Untitled)" "$(BDS)\\Bin\\htmide90.bpl"="HTML Designer Package" "$(BDS)\\Bin\\iteidew3290.bpl"="Borland Integrated Translation Environment for Win32" "$(BDS)\\Bin\\SrcManIDE90.bpl"="(Untitled)" "$(BDS)\\Bin\\todoide90.bpl"="Borland ToDo" "$(BDS)\\Bin\\htmlhelp290.bpl"="Borland HtmlHelp Viewer" "$(BDS)\\Bin\\idefilefilters90.bpl"="IDE File filters" "$(BDS)\\Bin\\startpageide90.bpl"="Borland Start Page IDE Package" "$(BDS)\\Bin\\refactoride90.bpl"="Borland Core Refactoring Package" "$(BDS)\\Bin\\dbkdebugide90.bpl"="(Untitled)" "$(BDS)\\Bin\\exceptiondiag90.bpl"="(Untitled)" "$(BDS)\\bin\\deployide90.bpl"="Deployment Manager" "$(BDS)\\Bin\\plugview90.bpl"="Pluggable Tree View Package" "$(BDS)\\Bin\\coreproide90.bpl"="Core IDE Pro Package" "$(BDS)\\Bin\\IDETools90.bpl"="Build Tools" "$(BDS)\\Bin\\unittestide90.bpl"="(Untitled)" "$(BDS)\\Bin\\historyide90.bpl"="(Untitled)" "$(BDS)\\Bin\\htmltidy90.bpl"="HTML Tidy Formatter" "$(BDS)\\Bin\\HTMLFmt90.bpl"="HTML Internal Formatter" "$(BDS)\\Bin\\mlcc90.bpl"="Markup Language Code Completion Package" "$(BDS)\\Bin\\delphivclide90.bpl"="Delphi VCL Designer IDE Package" "$(BDS)\\Bin\\delphicoreproide90.bpl"="(Untitled)" "$(BDS)\\Bin\\win32debugide90.bpl"="(Untitled)" "$(BDS)\\Bin\\htmlide90.bpl"="(Untitled)" "$(BDS)\\Bin\\delphide90.bpl"="Delphi Win32 IDE Personality" "$(BDS)\\Bin\\mtspro90.bpl"="(Untitled)" "$(BDS)\\Bin\\mtsent90.bpl"="(Untitled)" "$(BDS)\\Bin\\iteidenet90.bpl"="Borland Integrated Translation Environment for .NET" "$(BDS)\\Bin\\NetImportWiz90.bpl"="(Untitled)" "$(BDS)\\Bin\\DataExplorer90.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; interfaceuses TestFramework; type  TBasic = class public  function Add(a, b: integer): integer; end; TTestBasic = class(TTestCase) private  FBasic: TBasic; public  procedure SetUp; override;  procedure TearDown; override;  published  procedure TestAdd; end; implementationfunction 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。   至此重构功能和单元测试都有了。剩下的就是给既有代码添加测试,然后慢慢重构的事情了。 下载本文示例代码


Delphi2005和DUnit搭建敏捷开发平台Delphi2005和DUnit搭建敏捷开发平台Delphi2005和DUnit搭建敏捷开发平台Delphi2005和DUnit搭建敏捷开发平台Delphi2005和DUnit搭建敏捷开发平台Delphi2005和DUnit搭建敏捷开发平台Delphi2005和DUnit搭建敏捷开发平台Delphi2005和DUnit搭建敏捷开发平台Delphi2005和DUnit搭建敏捷开发平台Delphi2005和DUnit搭建敏捷开发平台Delphi2005和DUnit搭建敏捷开发平台Delphi2005和DUnit搭建敏捷开发平台Delphi2005和DUnit搭建敏捷开发平台Delphi2005和DUnit搭建敏捷开发平台Delphi2005和DUnit搭建敏捷开发平台
阅读(247) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~