其他语言

位置:IT落伍者 >> 其他语言 >> 浏览文章

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


发布日期:2022年07月26日
 
用Delphi2005和DUnit搭建敏捷开发平台
之前用的是Java那一套东西有Eclipse什么都搞定了现在因为要用Delphi改一个即时通讯软件的缘故想着怎么能把重构和单元测试那一套搬到Delphi这边来书上说给现有的代码加单元测试能够加深对代码的理解并且可以作为改善代码的基础这不正是我要做的事情吗?于是为了搭建这么一个敏捷平台我以Delphi和DUnit进行了一点小小的尝试并把结果记录于下与大家分享

下载Delphi

因为Borland公司在中国不出售专业版本鑒于架构师和企业版的天价所以只能从网络上下载一个D版的做个人使用Delphi体积比较大而且Update也需要CD所以推荐用BT下载CD版本种子的地址如下

下载Delphi的sp

据说打过这个补丁之后能快一些但是这个补丁安装起来可慢了还需要用光盘下载地址如下

下载DUnit

安装Delphi+sp

注意一下keygen中有一个register以及安装的时候一定要同时安和win版本的delphiC#builder则无所谓因为如果只安装win版本会导致重构功能不可用(这是delphi的一个bug表现就是用重构的时候出的异常窗口)

精简Delphi

因为上一步的时候同时安装版本导致delphi启动的时候变得非常慢这个可以通过修改注册表删掉一些IDE的包来实现具体的做法是在Delphi的快捷方式目标后面加上参数rxxx也就是BDSexe rxxx这个xxx任由你指定然后你就会在HKEY_CURRENT_USER\Software\Borland\xxx(这个就是你选定的名字xxx)\\Known IDE Packages中发现那些该死的包注意不能和网络上别的win纯化分子那样删得太干净了那样重构就没法用了我自己试验多次之后得出的一个比较精简的列表如下

$(BDS)\\Bin\\vclmenudesignerbpl=(Untitled)

$(BDS)\\Bin\\windebugproidebpl=(Untitled)

$(BDS)\\Bin\\htmidebpl=HTML Designer Package

$(BDS)\\Bin\\iteidewbpl=Borland Integrated Translation Environment for Win

$(BDS)\\Bin\\SrcManIDEbpl=(Untitled)

$(BDS)\\Bin\\todoidebpl=Borland ToDo

$(BDS)\\Bin\\htmlhelpbpl=Borland HtmlHelp Viewer

$(BDS)\\Bin\\idefilefiltersbpl=IDE File filters

$(BDS)\\Bin\\startpageidebpl=Borland Start Page IDE Package

$(BDS)\\Bin\\refactoridebpl=Borland Core Refactoring Package

$(BDS)\\Bin\\dbkdebugidebpl=(Untitled)

$(BDS)\\Bin\\exceptiondiagbpl=(Untitled)

$(BDS)\\bin\\deployidebpl=Deployment Manager

$(BDS)\\Bin\\plugviewbpl=Pluggable Tree View Package

$(BDS)\\Bin\\coreproidebpl=Core IDE Pro Package

$(BDS)\\Bin\\IDEToolsbpl=Build Tools

$(BDS)\\Bin\\unittestidebpl=(Untitled)

$(BDS)\\Bin\\historyidebpl=(Untitled)

$(BDS)\\Bin\\htmltidybpl=HTML Tidy Formatter

$(BDS)\\Bin\\HTMLFmtbpl=HTML Internal Formatter

$(BDS)\\Bin\\mlccbpl=Markup Language Code Completion Package

$(BDS)\\Bin\\delphivclidebpl=Delphi VCL Designer IDE Package

$(BDS)\\Bin\\delphicoreproidebpl=(Untitled)

$(BDS)\\Bin\\windebugidebpl=(Untitled)

$(BDS)\\Bin\\htmlidebpl=(Untitled)

$(BDS)\\Bin\\delphidebpl=Delphi Win IDE Personality

$(BDS)\\Bin\\mtsprobpl=(Untitled)

$(BDS)\\Bin\\mtsentbpl=(Untitled)

$(BDS)\\Bin\\iteidenetbpl=Borland Integrated Translation Environment for NET

$(BDS)\\Bin\\NetImportWizbpl=(Untitled)

$(BDS)\\Bin\\DataExplorerbpl=(Untitled)

虽然启动还是有些慢不过总算能忍受了

编译并安装DUnit

用你知道的办法把DUnit编译成dcu放入你指定的目录并把该目录添加到Delphi的Tools>Environment Options>Delphi Options>Librarywin的Library Path中

另外把DUnitexe给编译出来

建立工程

我推荐的方式是写Delphi程序的时候把界面和后台分开具体就是开两个项目一个普通的VCL项目一个DLL项目我的意思并不是让你用DLL这种方式来共享代码这个DLL项目包含文件是所有后台的内容以及对后台的测试产生的DLL给DUnit用DUnit能够从其中读出测试并运行而实际上GUI部分的那个工程是包含了所有的文件的也就是说分与其说分两个工程不如说是在原来的单个工程的基础上加上了一个专门用于测试的DLL工程

项目分为三块GUICoreTestCore工程一包括GUI+Core工程二包括Core+TestCore工程一的输出是WinExe程序工程二输出是WinDll程序

然后可以把这两个工程放到一个Project Group中

编写测试

工程一和普通写Dephi程序没有什么两样要记得把GUI的功能分出来后台让后台Testable测试都是写在工程二中的我把工程二的名字就叫做Core下面就在Core中添加一个最基本的测试检查+是不是等于

建立TestCase

unit TestBasic;

interface

uses

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;

implementation

function TBasicAdd(a b: integer): integer;

begin

Result := a + b;

end;

procedure TTestBasicSetUp;

begin

FBasic := TBasicCreate;

end;

procedure TTestBasicTearDown;

begin

FBasicFree;

end;

procedure TTestBasicTestAdd;

begin

CheckEquals( FBasicAdd( ));

end;

initialization

RegisterTest( TTestBasicSuite);

end

修改Corebdsproj(KAO什么古怪的后缀啊)

把begin end改成

exports

RegisteredTests name Test;

end

并在Uses部分添加TestFramework

DUnit就是通过这个export的函数在dll中找出我们注册的TestCase的

运行DUnit

把DUnit添加到Tools菜单下吧那样方便许多只是参数不好填写我没有用里面的macro直接填了绝对路径如果你和我一样这样直接填的绝对路径那么从Tools菜单下选DUnit就能直接看到一个测试列表了点运行就会看到一个绿灯亮起了

如果你不是把DUnit添加到Tools菜单那么就要从File>Load Test的文件选择窗口中找到Core项目编译出来的dllcoredll

上一篇:用Delphi编写圆周率模拟器

下一篇:Delphi实现动态修改显示器分辨率