那么運(yùn)行的結(jié)果如下:
這是一個(gè)簡(jiǎn)單的TestSuite的使用,我們將TestCaseFirst和TestCaseSecond放到Simple suite中來進(jìn)行管理。
對(duì)于復(fù)雜的應(yīng)用,我們也可以使用多層的TestSuite來進(jìn)行管理。先增加一個(gè)函數(shù):
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創(chuàng)建一個(gè)一層的TestSuite, BtestSuite.然后在將BtestSuite加入到AtestSuite。
后將initialization處的代碼改為如下:
initialization
TestFramework.RegisterTest('Simple Test', UnitTests);
end.
注冊(cè)AtestSuite可以了,以下是運(yùn)行結(jié)果:
控制臺(tái)(console)模式
如果想在Dos方式下直接運(yùn)行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.
先定義應(yīng)用程序類型,加入{$APPTYPE CONSOLE},然后使用TextTestRunner替代GUITestRunner可以了。
確省情況下,測(cè)試程序?qū)堰\(yùn)行所有的TestCase后給出報(bào)告,如果想在達(dá)到一定錯(cuò)誤停止運(yùn)行,可以使用
TextTestRunner.RunRegisteredTests(rxbHaltOnFailures);
Dunit附加功能
使用Dunit的附加功能要先在Uses中加入:
TestExtensions, // needed for TrepeatedTest
Dunit的主要附加功能有:
1、重復(fù)運(yùn)行某一TestCase
2、使用TtestSetup類初試化
Dunit的TestExtensions還提到了兩個(gè)類TactiveTest、TexceptionTestCase來實(shí)現(xiàn):
3、在獨(dú)立線程中運(yùn)行測(cè)試
4、Exception測(cè)試
但在Dunit中的新源碼,這兩個(gè)類只是簡(jiǎn)單繼承了TtestDecorator而沒有做任何的修改,在Dunit的Readme中也沒有提到這兩個(gè)類的用法。因此應(yīng)該屬于還沒有實(shí)現(xiàn)的類。
重復(fù)運(yùn)行TestCase
要重復(fù)運(yùn)行某一TestCase,只需要將initialization里面的注冊(cè)代碼
TestFramework.RegisterTest(TTestCaseFirst.Suite);