领测软件测试网
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,第二个参数代表次数。运行后的结果如下:
请注意,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.
运行之后的结果如下:
注意TtestCaseFirst前面加了”[d]”。运行一次测试就可以清楚看到TestSetupTest类中Setup和TearDown只运行了一次,而TtestCaseFirst中的Setup和TearDown运行了两次
测试Exception
虽然TexceptionTestCase没有实现,但是Dunit在源码附加\examples\testexception目录中