SOPTestV10DUNIT使用Word格式文档下载.docx

上传人:b****6 文档编号:21354688 上传时间:2023-01-29 格式:DOCX 页数:12 大小:97.97KB
下载 相关 举报
SOPTestV10DUNIT使用Word格式文档下载.docx_第1页
第1页 / 共12页
SOPTestV10DUNIT使用Word格式文档下载.docx_第2页
第2页 / 共12页
SOPTestV10DUNIT使用Word格式文档下载.docx_第3页
第3页 / 共12页
SOPTestV10DUNIT使用Word格式文档下载.docx_第4页
第4页 / 共12页
SOPTestV10DUNIT使用Word格式文档下载.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

SOPTestV10DUNIT使用Word格式文档下载.docx

《SOPTestV10DUNIT使用Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《SOPTestV10DUNIT使用Word格式文档下载.docx(12页珍藏版)》请在冰豆网上搜索。

SOPTestV10DUNIT使用Word格式文档下载.docx

然后后将Dunit的路径加到菜单Tools->

EnvironmentOptions里面的Library->

LibraryPath中。

Dunit的主要文件

File

Description

TestFramework.pas

Theframeworkitself.

TestExtensions.pas

Decoratorclassesthatmaybeusedtoextendtestcases.

GUITesting.pas

Classesfortestinguserinterfaces(FormsandDialogs).

TextTestRunner.pas

Routinestoruntestsinconsolemode.

GUITestRunner.pas

Thegraphicaluserinterfacetotheframework.

GUITestRunner.dfm

TheGUITestRunnerForm

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

Dunit的基本实现思路是将被测试代码(单元)与测试代码(单元)分开。

提供一个FrameWork及一个运行界面。

所有的测试单元都应继承TTestCase。

图表1运行GUI界面

这里要注意的一点是SetUp方法和TearDown是每个测试方法运行时都被调用的,如果想要只运行一次Setup及TearDown,应该使用TTestSetup类,具体情况见后面《Dunit附加功能》一节。

创建一个简单的例子

1.创建一个被测试的Project。

创建一个名为BeTestProject的Project,将缺省的Unit1保存为BeTestUnit.pas文件。

把缺省的TForm1改名为BeTestForm中增加一个Public的函数BeTestFunction,BeTestFunction代码如下:

functionBeTestForm.BeTestFunction(i,j:

integer):

integer;

begin

Result:

=i*j;

end;

2.创建一个测试Project

再创建一个Project,命名为TestProject。

如果没有和BeTestProject放在同一目录,将BeTestProject的存放路径加到加到菜单Tools->

(是否可以加到测试工程的环境变量中)

3.编写TestCase

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

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

uses

TestFrameWork,BeTestUnit;

TestFrameWork是每个TestCase都必须使用的,后面要使用的TTestCase等类的定义都在TestFrameWork中。

BeTestUnit是将要被测试单元。

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

TTestCaseFirst=class(TTestCase)

private

BeTestForm:

TBeTestForm;

//要测试的类

protected

procedureSetUp;

override;

//初始化类

procedureTearDown;

//清除数据

published

procedureTestFirst;

//第一个测试方法

procedureTestSecond;

//第二个测试方法

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

TestFramework.RegisterTest(TTestCaseFirst.Suite);

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

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

2、测试方法被申明为Published

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

以下是实现的代码:

procedureTTestCaseFirst.SetUp;

=TBeTestForm.Create(Nil);

procedureTTestCaseFirst.TearDown;

BeTestForm.Free;

procedureTTestCaseFirst.TestFirst;

Check(BeTestForm.BeTestFunction(1,3)=3,'

FirstTestfail'

);

procedureTTestCaseFirst.TestSecond;

Check(BeTestForm.BeTestFunction(1,3)=4,'

SecondTestfail'

//RegisterTestCase

initialization

end.

Check是TestCase类提供的一个方法。

以下是TestCase的实现代码:

procedureTTestCase.Check(condition:

boolean;

msg:

string);

if(notcondition)then

Fail(msg,CallerAddr);

End;

如果Check没有通过的话,Dunit将报错。

错误提示就在第二个参数中定义,其他有关类及方法的定义请看连机文档,文档放在Dunit安装目录:

docAPIIDH_Library_DUnit_-_Xtreme_Unit_Testing_for_Delphi.htm

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

4.修改Project主文件

运行前的最后一步是修改Project主文件TestProject.dpr。

先使用菜单Project->

ViewSource打开TestProject.dpr.

修改后的代码如下:

programTestProject;

Forms,

TestFrameWork,

GUITestRunner,

TestUnitin'

TestUnit.pas'

;

{$R*.res}

Application.Initialize;

//Application.Run;

GUITestRunner.RunRegisteredTests;

end.

5.运行测试例子

运行的测试结果如下:

6.使用TestSuite

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

TTestCaseSecond=class(TTestCase)

procedureTestThrid;

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

TestFramework.RegisterTest(TTestCaseSecond.Suite);

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

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

TestFramework.RegisterTest('

Simplesuite'

,TTestCaseFirst.Suite);

,TTestCaseSecond.Suite);

那么运行的结果如下:

这就是一个简单的TestSuite的使用,我们将TestCaseFirst和TestCaseSecond放到Simplesuite中来进行管理。

对于复杂的应用,我们也可以使用多层的TestSuite来进行管理。

先增加一个函数:

functionUnitTests:

ITestSuite;

var

ATestSuite,BTestSuite:

TTestSuite;

BTestSuite:

=TTestSuite.Create('

Sometrivialtests'

[

TTestCaseFirst.Suite,

TTestCaseSecond.Suite

]);

ATestSuite:

=TTestSuite.create('

Someothertrivialtests'

ATestSuite.addTest(TTestCaseFirst.Suite);

ATestSuite.addTest(BTestSuite);

Result:

=ATestSuite;

我们先使用TTestSuite.Create创建一个一层的TestSuite,BtestSuite.然后在将BtestSuite加入到AtestSuite。

最后将initialization处的代码改为如下:

SimpleTest'

,UnitTests);

注册AtestSuite就可以了,以下是运行结果:

控制台(console)模式

如果想在Dos方式下直接运行TestCase,只要修改Dpr文件即可。

{$APPTYPECONSOLE}

TextTestRunner,

//GUITestRunner.RunRegisteredTests;

TextTestRunner.RunRegisteredTests;

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

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

TextTestRunner.RunRegisteredTests(rxbHaltOnFailures);

Dunit附加功能

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

TestExtensions,//neededforTrepeatedTest

Dunit的主要附加功能有:

1、重复运行某一TestCase

2、使用TTestSetup类初试化

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

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

4、Exception测试

但在Dunit中的最新源码,这两个类只是简单继承了TTestDecorator而没有做任何的修改,在Dunit的Readme中也没有提到这两个类的用法。

因此应该属于还没有实现的类。

重复运行TestCase

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

简单替换为:

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

就可以,TRepeatedTest.Create的第一个参数为要重复的TestSuite/TestCase,第二个参数代表次数。

运行后的结果如下:

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

使用TTestSetup类

使用TTestSetup类的作用就是在运行所有的测试方法前后只运行一次Setup和TearDown。

可以用于创建数据库连接等等。

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

TestSetupTest=class(TTestSetup)

加入实现代码

procedureTestSetupTest.SetUp;

ShowMessage('

TestSetupTestSetup'

procedureTestSetupTest.TearDown;

TestSetupTestTearDown'

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

TTestCaseFirstSetup'

BeTestForm.Destroy;

TTestCaseFirstTearDown'

最后将initialization改为

//TestFramework.RegisterTest(TTestCaseFirst.Suite);

TestFramework.RegisterTest(TestSetupTest.Create(TTestCaseFirst.Suite));

运行之后的结果如下:

注意TTestCaseFirst前面加了”[d]”。

运行一次测试就可以清楚看到TestSetupTest类中Setup和TearDown只运行了一次,而TTestCaseFirst中的Setup和TearDown运行了两次

测试Exception

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

主要的实现在procedureTTestMyObject.CheckException和procedureTTestMyObjectOverrideRunTest.RunTest中。

具体的实现可以看代码。

附件

Dunit包文件

提示:

双击上面的链接,如果无法打开很可能是dunit-7.2.0.zip与本文档不在同一个目录下。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 少儿英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1