您的位置:软件测试 > 开源软件测试 > 开源单元测试工具 >
Delphi单元测试工具Dunit介绍
作者:网络转载 发布时间:[ 2013/3/7 13:32:36 ] 推荐标签:

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

    TTestCaseFirst = class(TTestCase)

    private

    BeTestForm : TBeTestForm; //要测试的类

    protected

    procedure SetUp; override; //初始化类

    procedure TearDown; override; //清除数据

    published

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

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

    end;

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

    TestFramework.RegisterTest(TTestCaseFirst.Suite);

    这段代码将在后面提到,TtestCaseFirst.Suit在寻找的规则是:

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

    2、测试方法被申明为Published

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

    以下是实现的代码:

    procedure TTestCaseFirst.SetUp;

    begin

    BeTestForm := TBeTestForm.Create(Nil);

    end;

    procedure TTestCaseFirst.TearDown;

    begin

    BeTestForm.Destroy;

    end;

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

    begin

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

    end;

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

    begin

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

    end;

    //Register TestCase

    initialization

    TestFramework.RegisterTest(TTestCaseFirst.Suite);

    end.

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

    procedure TTestCase.Check(condition :boolean; msg :string);
    begin
    if (not condition) then
    Fail(msg, CallerAddr);
    End;

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

    Dunit安装目录docAPIIDH_Library_DUnit_-_Xtreme_Unit_Testing_for_Delphi.htm

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

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

    修改后的代码如下:

    program TestProject;

    uses

    Forms,

    TestFrameWork,

    GUITestRunner,

    TestUnit in 'TestUnit.pas';

    {$R *.res}

    begin

    Application.Initialize;

    //Application.Run;

    GUITestRunner.RunRegisteredTests;

    end.

    上面的加粗代码是要增加和修改。

    运行测试例子
    运行的测试结果如下:

    使用TestSuite
    使用TestSuite的目的是对TestCase进行分类管理,如果我们再增加一个TestCase 如下

    TTestCaseSecond = class(TTestCase)

    published

    procedure TestThrid;

    end;

    添加TestThrid实现代码后,在initialization代码处增加

    TestFramework.RegisterTest(TTestCaseSecond.Suite);

    运行以后我们可以看到结果如下:

    如果我们将initialization处的代码改为如下:

    initialization

    TestFramework.RegisterTest('Simple suite',TTestCaseFirst.Suite);

    TestFramework.RegisterTest('Simple suite',TTestCaseSecond.Suite);

    end.

上一页1234下一页
软件测试工具 | 联系我们 | 投诉建议 | 诚聘英才 | 申请使用列表 | 网站地图
沪ICP备07036474 2003-2017 版权所有 上海泽众软件科技有限公司 Shanghai ZeZhong Software Co.,Ltd