線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1537
推到 Plurk!
推到 Facebook!

用Delphi2005和DUnit搭建敏捷開發平臺

 
conundrum
尊榮會員


發表:893
回覆:1272
積分:643
註冊:2004-01-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-02-09 00:21:49 IP:218.175.xxx.xxx 未訂閱
 用Delphi2005和DUnit搭建敏捷開發平臺
http://www.zahui.com/html/2/40722.htm
之前用的是Java那一套東西,有Eclipse什麼都搞定了。現在因為要用Delphi改一個即時通訊軟體的緣故,想著怎麼能把重構和單元測試那一套搬到Delphi這邊來。書上說給現有的代碼加單元測試能夠加深對代碼的理解,並且可以作為改善代碼的基礎,這不正是我要做的事情嗎?於是,為了搭建這麼一個敏捷平臺,我以Delphi2005和DUnit進行了一點小小的嘗試,並把結果記錄於下,與大家分享。         3、下載DUnit 
https://sourceforge.net/projects/dunit/     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; 
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 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。     ————     至此重構功能和單元測試都有了。剩下的就是給既有代碼添加測試,然後慢慢重構的事情了。    
系統時間:2024-05-10 19:55:49
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!