• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Delphi单元测试

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

Dunit的官方Web Site 是https://sourceforge.net/projects/dunit/

Dunit的主要文件,src下包括的文件表:      

文件名称

说明

TestFramework.pas

框架本身

TestExtensions.pas

可用来扩充测试案例的Decorator类别

GUITesting.pas

测试用户界面(窗口和对话框)的类别

TextTestRunner.pas

在主控台模式下执行测试的标准程序

GUITestRunner.pas

此框架的图形化用户界面

GUITestRunner.dfm

GUITestRunner界面

 

  配置测试环境

  在使用Dunit前应该将下载的Dunit解压。然后后将Dunit的路径加到菜单 Tools->Environment Options 里面的Library->Library Path中。

  

 

还有方法:

 

  Dunit基本实现方法(GUI方式)

  Dunit的基本实现思路是将被测试代码(单元)与测试代码(单元)分开。提供一个FrameWork及一个运行界面。 所有的测试单元都应继承TtestCase。

  运行GUI界面

  

 

  运行TestCase

  

 

  创建一个简单的例子,如下:

  创建一个被测试的Project,添加代码如下:

  public

     function BeTestFunction(i,j:integer):integer;

  end;

添加实现代码如下:

implementation

function TForm1.BeTestFunction(i,j:integer):integer;

 begin

   Result:=i*j;

 end;

end.

编译,通过。  

再创建一个Project,命名为TestProject。如果没有和被测试的Project放在同一目录,将被测试的Project的存放路径加到加到菜单 Tools->Environment Options 里面的Library->Library Path中。

  编写TestCase

  删除确省的Unit1(Form1),创建一个的Unit,注意不是Form.

  

 

将创建的Unit保存为Test,在interface中加入以下代码

 

 

uses

TestFrameWork,Unit1; //要测试的名称

  TestFrameWork是每个TestCase都必须使用的,后面要使用的TtestCase等类的定义都在TestFrameWork中。BeTestUnit是将要被测试单元。

定义TestCase,测试类定义代码如下:

type

    TTestCaseFirst=class(TTestCase)

    private   

    Form1 :TForm1;//要测试的类

    protected

    procedure SetUp; override;//初始化类

    procedure TearDown;override;//清楚数据

    published

    procedure TestFirst;//第一个测试方法

    procedure TestSecond;//第二个测试方法   

end;

  TtestCaseFirst.Suit在寻找的规则是:

  1、测试方法是没有参数的Procedure

  2、测试方法被申明为Published

  SetUp,TearDown是在运行测试方法前、后运行的,所有一般把要测试的类的初始化及清除放在这两个过程中。

  以下是实现的代码:

 implementation

      procedure TTestCaseFirst.SetUp;

    begin

    Form1 := TForm1.Create(Nil);

    end;

    procedure TTestCaseFirst.TearDown;

    begin

    Form1.Destroy;

    end;

    procedure TTestCaseFirst.TestFirst; //第一个测试方法

    begin

    Check(Form1.BeTestFunction(1,3) = 3,'First Test fail');

    end;

    procedure TTestCaseFirst.TestSecond; //第二个测试方法

    begin

    Check(Form1.BeTestFunction(1,3)=4,'Second Test fail');

    end;

    initialization

    TestFramework.RegisterTest(TTestCaseFirst.Suite);

    end.

在定义测试方法时候注意,Dunit是通过RTTI(RunTime Type Information)来寻找并自动注册测试方面的,具体实现是通过代码。 TestFramework.RegisterTest(TTestCaseFirst.Suite);

  Check是TestCase类提供的一个方法。以下是TestCase的实现代码:

  procedure TTestCase.Check(condition :boolean; msg :string);

  begin

  if (not condition) then

  Fail(msg, CallerAddr);

  End;

  如果Check没有通过的话,Dunit将报错。错误提示就在第二个参数中定义,其他有关类及方法的定义请看连机文档,文档放在

  Dunit安装目录/doc/API/IDH_Library_DUnit_-_Xtreme_Unit_Testing_for_Delphi.htm

  Initialzation代码完成测试单元的注册。

  修改Project主文件

  运行前的最后一步是修改Project主文件TestProject.dpr。先使用菜单Project->View Source打开Project1.dpr.

  修改后的代码如下:

  program Project1;

uses

  Forms,

  TestFrameWork,

  GUITestRunner,

  TextTestRunner,

  Test in 'Test.pas';

begin

  Application.Initialize;

  GUITestRunner.RunRegisteredTests;

end.

 

来源:http://blog.csdn.net/amy0428/article/details/4242129


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
delphi读取ini文件发布时间:2022-07-18
下一篇:
C++BuilderXE2随意学习(4)DelphiXE2官方视频教程31天发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap