Delphi单元测试工具Dunit介绍(根据网上资料整理)
一、配置测试环境(以Delphi7为例)
将下载的Dunit解压。然后后将Dunit的路径(含SRC目录)加到菜单 Tools->Environment Options 里面的Library->Library Path中。
二创建实例
1、先创建一个被测试的Project
新建一个Application,默认窗体保存为unit1.pas,程序保存为Project1.dpr,然后在unit1.pas中的public下增加一个函数。并在实现部分添加函数内容。代码如下:
unit Unit1; interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type
TForm1 = class(TForm) private
{ Private declarations } public
function TestFunction(i,j:integer):integer; { Public declarations } end; var
Form1: TForm1;
implementation
function TForm1.TestFunction(i,j:integer):integer; begin
Result:=i*j; end;
{$R *.dfm} end.
2、将上一工程关闭,然后新建一个工程,和上一工程保存在同一目录下,用于测试上一工程。
新建一个Application,然后将默认的Unit1(Form1)删除掉,再新建一个unit文件,并保存为TestUnit.pas,将工程保存为TestProject.dpr.
在新建的TestUnit.pas文件的interface下加入以下代码 uses
TestFrameWork, Unit1; //被测试的单元
//TestFrameWork是每个TestCase都必须使用的, TtestCase等类的定义都在TestFrameWork中。
定义TestCase,测试类定义代码如下: type
TTestCaseFirst=class(TTestCase) private
MyTestForm:TForm1; //定义测试类,unit1中的窗体 protected
procedure SetUp;override;//初始化类 procedure TearDown;override;//清除数据 published
procedure TestFirst;//第一个测试方法 procedure TestSecond;//第二个测试方法
end;
实现代码如下:
procedure TTestCaseFirst.SetUp; begin
MyTestForm:= TForm1.Create(Nil); end;
procedure TTestCaseFirst.TearDown; begin
MyTestForm.Destroy; end;
procedure TTestCaseFirst.TestFirst; //第一个测试方法 begin
Check(MyTestForm.TestFunction(1,3) = 3,'First Test fail'); end;
procedure TTestCaseFirst.TestSecond; //第二个测试方法 begin
Check(MyTestForm.TestFunction(1,3)=4,'Second Test fail'); end;
注:在定义测试方法时候注意,Dunit是通过RTTI(RunTime Type Information)来寻找并自动注册测试方面的,具体实现是通过代码
TestFramework.RegisterTest(TTestCaseFirst.Suite); TtestCaseFirst.Suit在寻找的规则是: (1)、测试方法是没有参数的Procedure (2)、测试方法被申明为Published
SetUp,TearDown是在运行测试方法前、后运行的,所有一般把要测试的类的初始化及清除放在这两个过程中。
注册类代码 initialization
TestFramework.RegisterTest(TTestCaseFirst.Suite);
完整代码如下: unit TestUnit;
interface uses
TestFrameWork, Unit1; //被测试的单元 type
TTestCaseFirst=class(TTestCase) private
MyTestForm:TForm1; //定义测试类,unit1中的窗体 protected
procedure SetUp;override;//初始化类 procedure TearDown;override;//清除数据 published
procedure TestFirst;//第一个测试方法 procedure TestSecond;//第二个测试方法 end;
implementation
procedure TTestCaseFirst.SetUp; begin
MyTestForm:= TForm1.Create(Nil); end;
procedure TTestCaseFirst.TearDown; begin
MyTestForm.Destroy; end;
procedure TTestCaseFirst.TestFirst; //第一个测试方法 begin
Check(MyTestForm.TestFunction(1,3) = 3,'First Test fail'); end;
procedure TTestCaseFirst.TestSecond; //第二个测试方法