那么運行的結果如下:
這是一個簡單的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);