zoukankan      html  css  js  c++  java
  • Delphi 单元测试

    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

  • 相关阅读:
    Java多线程初学者指南(5):join方法的使用
    Java多线程初学者指南(4):线程的生命周期
    使用Runnable接口创建线程-3
    用Thread类创建线程-2
    线程简介-1
    Struts, Namespace用法
    多线程编程
    算法实例
    java 堆与栈的区别
    Spring AOP EXPRESSION
  • 原文地址:https://www.cnblogs.com/yangxuming/p/6908025.html
Copyright © 2011-2022 走看看