之前用的是Java那一套東西
有Eclipse什麼都搞定了
現在因為要用Delphi改一個即時通訊軟件的緣故
想著怎麼能把重構和單元測試那一套搬到Delphi這邊來
書上說給現有的代碼加單元測試能夠加深對代碼的理解
並且可以作為改善代碼的基礎
這不正是我要做的事情嗎?於是
為了搭建這麼一個敏捷平台
我以Delphi
和DUnit進行了一點小小的嘗試
並把結果記錄於下
與大家分享
下載Delphi
因為Borland公司在中國不出售專業版本
鑒於架構師和企業版的天價
所以只能從網絡上下載一個D版的做個人使用
Delphi
體積比較大
而且Update
也需要CD
所以推薦用BT下載
CD版本
種子的地址如下
下載Delphi
的sp
據說打過這個補丁之後能快一些
但是這個補丁安裝起來可慢了
還需要用光盤
下載地址如下
下載DUnit
安裝Delphi
+sp
注意一下keygen中有一個register以及安裝的時候一定要同時安和win
版本的delphi
C#builder則無所謂
因為如果只安裝win
版本會導致重構功能不可用(這是delphi
的一個bug
表現就是用重構的時候出的異常窗口)
精簡Delphi
因為上一步的時候同時安裝版本
導致delphi啟動的時候變得非常慢
這個可以通過修改注冊表
刪掉一些IDE的包來實現
具體的做法是在Delphi的快捷方式目標後面加上參數
rxxx
也就是BDS
exe
rxxx
這個xxx任由你指定
然後你就會在HKEY_CURRENT_USER\Software\Borland\xxx(這個就是你選定的名字xxx)\
\Known IDE Packages中發現那些該死的包
注意不能和網絡上別的win
純化分子那樣刪得太干淨了
那樣重構就沒法用了
我自己試驗多次之後得出的一個比較精簡的列表如下
$(BDS)\\Bin\\vclmenudesigner
bpl
=
(Untitled)
$(BDS)\\Bin\\win
debugproide
bpl
=
(Untitled)
$(BDS)\\Bin\\htmide
bpl
=
HTML Designer Package
$(BDS)\\Bin\\iteidew
bpl
=
Borland Integrated Translation Environment for Win
$(BDS)\\Bin\\SrcManIDE
bpl
=
(Untitled)
$(BDS)\\Bin\\todoide
bpl
=
Borland ToDo
$(BDS)\\Bin\\htmlhelp
bpl
=
Borland HtmlHelp Viewer
$(BDS)\\Bin\\idefilefilters
bpl
=
IDE File filters
$(BDS)\\Bin\\startpageide
bpl
=
Borland Start Page IDE Package
$(BDS)\\Bin\\refactoride
bpl
=
Borland Core Refactoring Package
$(BDS)\\Bin\\dbkdebugide
bpl
=
(Untitled)
$(BDS)\\Bin\\exceptiondiag
bpl
=
(Untitled)
$(BDS)\\bin\\deployide
bpl
=
Deployment Manager
$(BDS)\\Bin\\plugview
bpl
=
Pluggable Tree View Package
$(BDS)\\Bin\\coreproide
bpl
=
Core IDE Pro Package
$(BDS)\\Bin\\IDETools
bpl
=
Build Tools
$(BDS)\\Bin\\unittestide
bpl
=
(Untitled)
$(BDS)\\Bin\\historyide
bpl
=
(Untitled)
$(BDS)\\Bin\\htmltidy
bpl
=
HTML Tidy Formatter
$(BDS)\\Bin\\HTMLFmt
bpl
=
HTML Internal Formatter
$(BDS)\\Bin\\mlcc
bpl
=
Markup Language Code Completion Package
$(BDS)\\Bin\\delphivclide
bpl
=
Delphi VCL Designer IDE Package
$(BDS)\\Bin\\delphicoreproide
bpl
=
(Untitled)
$(BDS)\\Bin\\win
debugide
bpl
=
(Untitled)
$(BDS)\\Bin\\htmlide
bpl
=
(Untitled)
$(BDS)\\Bin\\delphide
bpl
=
Delphi Win
IDE Personality
$(BDS)\\Bin\\mtspro
bpl
=
(Untitled)
$(BDS)\\Bin\\mtsent
bpl
=
(Untitled)
$(BDS)\\Bin\\iteidenet
bpl
=
Borland Integrated Translation Environment for
NET
$(BDS)\\Bin\\NetImportWiz
bpl
=
(Untitled)
$(BDS)\\Bin\\DataExplorer
bpl
=
(Untitled)
雖然啟動還是有些慢
不過總算能忍受了
編譯並安裝DUnit
用你知道的辦法把DUnit編譯成dcu
放入你指定的目錄
並把該目錄添加到Delphi的Tools
>Environment Options
>Delphi Options
>Library
win
的Library Path中
另外把DUnit
exe給編譯出來
建立工程
我推薦的方式是寫Delphi程序的時候把界面和後台分開
具體就是開兩個項目
一個普通的VCL項目
一個DLL項目
不
不
我的意思並不是讓你用DLL這種方式來共享代碼
這個DLL項目包含文件是所有後台的內容
以及對後台的測試
產生的DLL給DUnit用
DUnit能夠從其中讀出測試並運行
而實際上GUI部分的那個工程是包含了所有的文件的
也就是說分與其說分兩個工程
不如說是在原來的單個工程的基礎上加上了一個專門用於測試的DLL工程
項目分為三塊
GUI
Core
TestCore
工程一包括GUI+Core
工程二包括Core+TestCore
工程一的輸出是Win
Exe程序
工程二輸出是Win
Dll程序
然後可以把這兩個工程放到一個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 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(
FBasic
Add(
));
end;
initialization
RegisterTest(
TTestBasic
Suite);
end
修改Core
bdsproj(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項目編譯出來的dll
core
dll
From:http://tw.wingwit.com/Article/program/Delphi/201311/24654.html