虫虫技术在线--技术决定出路

当前位置: 首页 > 编程 > Delphi >

Delphi单元测试工具Dunit介绍(3)

时间:2010-02-19 15:00来源:未知 作者:admin 点击:
// GUITestRunner.RunRegisteredTests; TextTestRunner.RunRegisteredTests; end. 先定义应用程序类型,加入{$APPTYPE CONSOLE},然后使用TextTestRunner替代GUITestRunner就可以了。 确省情

  // GUITestRunner.RunRegisteredTests;
  TextTestRunner.RunRegisteredTests;
  end.

 

  先定义应用程序类型,加入{$APPTYPE CONSOLE},然后使用TextTestRunner替代GUITestRunner就可以了。

  确省情况下,测试程序将把运行所有的TestCase后给出报告,如果想在达到一定错误就停止运行,可以使用

  TextTestRunner.RunRegisteredTests(rxbHaltOnFailures);

  Dunit附加功能

  使用Dunit的附加功能要先在Uses中加入:

  TestExtensions, // needed for TrepeatedTest

  Dunit的主要附加功能有:

  1、重复运行某一TestCase

  2、使用TtestSetup类初试化

  Dunit的TestExtensions还提到了两个类TactiveTest、TexceptionTestCase来实现:

  3、在独立线程中运行测试

  4、Exception测试

  但在Dunit中的最新源码,这两个类只是简单继承了TtestDecorator而没有做任何的修改,在Dunit的Readme中也没有提到这两个类的用法。因此应该属于还没有实现的类。

  重复运行TestCase

  要重复运行某一TestCase,只需要将initialization里面的注册代码

  TestFramework.RegisterTest(TTestCaseFirst.Suite);

 

  简单替换为:

  TestFramework.RegisterTest(TRepeatedTest.Create(TTestCaseFirst.Suite, 2));

 

  就可以,TRepeatedTest.Create的第一个参数为要重复的TestSuite/TestCase,第二个参数代表次数。运行后的结果如下:

Delphi单元测试工具Dunit介绍

  请注意,TestCaseFirst前面多了“2x”。

  使用TtestSetup类

  使用TtestSetup类的作用就是在运行所有的测试方法前后只运行一次Setup几TearDown。可以用于创建数据库连接等等。

  要使用TtestSetup,我们先在《创建一个简单的例子》一节中创建的TestUnit中声明一个新的类(先在Uses中加入Dialogs,TestExtensions)

  TestSetupTest = class (TTestSetup)
  protected
  procedure SetUp; override; //初始化类
  procedure TearDown; override; //清除数据
  end;

 

  加入实现代码

  procedure TestSetupTest.SetUp;
  begin
  ShowMessage('TestSetupTest Setup');
  end;
  procedure TestSetupTest.TearDown;
  begin
  ShowMessage('TestSetupTest TearDown');
  end;

 

  修改TtestCaseFirst.SetUp及TTestCaseFirst.TearDown,加入下面加粗语句。

  procedure TTestCaseFirst.SetUp;
  begin
  BeTestForm := TBeTestForm.Create(Nil);
  ShowMessage('TTestCaseFirst Setup');
  end;
  procedure TTestCaseFirst.TearDown;
  begin
  BeTestForm.Destroy;
  ShowMessage('TTestCaseFirst TearDown');
  end;

 

  最后将initialization改为

  initialization
  //TestFramework.RegisterTest(TTestCaseFirst.Suite);
  TestFramework.RegisterTest(TestSetupTest.Create(TTestCaseFirst.Suite));
  end.

 

  运行之后的结果如下:

Delphi单元测试工具Dunit介绍

  注意TtestCaseFirst前面加了”[d]”。运行一次测试就可以清楚看到TestSetupTest类中Setup和TearDown只运行了一次,而TtestCaseFirst中的Setup和TearDown运行了两次

  测试Exception

  虽然TexceptionTestCase没有实现,但是Dunit在源码附加examples  estexception目录中有一个如何测试Exception的例子。

  主要的实现在procedure TTestMyObject.CheckException和procedure TTestMyObjectOverrideRunTest.RunTest中。具体的实现可以看代码。

(责任编辑:admin)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
推荐内容