簡單替換為:
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 estexception目錄中有一個如何測試Exception的例子。
主要的實現在procedure TTestMyObject.CheckException和procedure TTestMyObjectOverrideRunTest.RunTest中。具體的實現可以看代碼。