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

2016-02-19 18:25 7 1 收藏

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

【 tulaoshi.com - 编程语言 】

 

  之前用的是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

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

  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 TBasic.Add(a, b: integer): integer;
  begin
    Result := a + b;
  end;

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

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

  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。
  
  ————
  
  至此重构功能和单元测试都有了。剩下的就是给既有代码添加测试,然后慢慢重构的事情了。
  


来源:https://www.tulaoshi.com/n/20160219/1617583.html

延伸阅读
标签: ASP
  随着网络技术的发展和Internet的普及,Browser/Server在软件开发中已成为主流,笔者在开发一个ERP系统时,就采用了B/S软件模式,具体架构为SQL Server+IIS+IE网页采用的是Active Server Page文件。由于系统涉及大量的数据操作和查询,若纯粹采用ASP脚本语言编写势必造成效率低下,为了提高系统的整体效率和安全性,笔者采用了AS...
标签: Web开发
一 使用Tomcat服务器,使用DBCP数据源搭建Web开发环境 1.JDK安装,默认路径即可 2.Tomcat5.5服务器 1)配置Tomcat的服务器端口: 打开D:\apache-tomcat-5.0.18\conf\server.xml, 查看如下代码: !-- Define a non-SSL Coyote HTTP/1.1 Connector on port 8080 -- Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareTh...
一、概述 Borland 希望Delphi 2005 能成为Windows平台上的最终的完整解决方案,为此 Delphi 2005 集成了 Delphi, C#, Microsoft .NET Framework and Win32 ,支持图形用户接口(GUI), Web开发, 数据库、富客户端应用程序(rich-client applications)等多方面的开发, 集成软件生命周期管理(ALM)功能及快速开发(即RAD)的能力。在Del...
今年9月中旬Borland正式推出了JBuilder 2005,这是去年发布的JBuilderX的升级版,为开发人员提供了更全面的工具以减少Java开发的复杂性并优化软件的性能。JBuilderX获得了开发人员很高的赞誉,然而JBuilder 2005却提供了更强大的性能,它包括了以下方面的改进: 综合管理性能,常规错误代码的检测功能,为增强安全性能提供一种新的安全检测...
标签: Delphi
  提到 RPG (角色扮演游戏,Role Play Game),在座各位恐怕没有不熟悉的。从古老经典的 DOS 版《仙剑奇侠传》到新潮花哨的《轩辕剑》系列,无不以曲折优美的故事情节,美丽可人的主角,悦耳动情的背景音乐,震撼了每一个玩家的心灵。而说到 RPG,就不能不提 DirectX,因为 PC 上大部分的 RPG 都是用这个冬冬开发的。早在《轩辕剑叁外...

经验教程

551

收藏

60
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部