那么运行的结果如下:
这是一个简单的TestSuite的使用,我们将TestCaseFirst和TestCaseSecond放到Simple suite中来进行管理。
对于复杂的应用,我们也可以使用多层的TestSuite来进行管理。先增加一个函数:
function UnitTests: ITestSuite;
var
ATestSuite,BTestSuite: TTestSuite;
begin
BTestSuite := TTestSuite.Create('Some trivial tests',
[
TTestCaseFirst.Suite,
TTestCaseSecond.Suite
]);
ATestSuite := TTestSuite.create('Some other trivial tests');
ATestSuite.addTest(TTestCaseFirst.Suite);
ATestSuite.addTest(BTestSuite);
Result := ATestSuite;
end;
我们先使用TtestSuite.Create创建一个一层的TestSuite, BtestSuite.然后在将BtestSuite加入到AtestSuite。
后将initialization处的代码改为如下:
initialization
TestFramework.RegisterTest('Simple Test', UnitTests);
end.
注册AtestSuite可以了,以下是运行结果:
控制台(console)模式
如果想在Dos方式下直接运行TestCase,只要修改Dpr文件即可。
{$APPTYPE CONSOLE}
program TestProject;
uses
Forms,
TestFrameWork,
GUITestRunner,
TextTestRunner,
TestUnit in 'TestUnit.pas';
{$R *.res}
begin
Application.Initialize;
// 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);