簡單替換為:
TestFramework.RegisterTest(TRepeatedTest.Create(TTestCaseFirst.Suite, 2));
可以,TRepeatedTest.Create的第一個參數(shù)為要重復(fù)的TestSuite/TestCase,第二個參數(shù)代表次數(shù)。運行后的結(jié)果如下:
請注意,TestCaseFirst前面多了“2x”。
使用TtestSetup類
使用TtestSetup類的作用是在運行所有的測試方法前后只運行一次Setup幾TearDown?梢杂糜趧(chuàng)建數(shù)據(jù)庫連接等等。
要使用TtestSetup,我們先在《創(chuàng)建一個簡單的例子》一節(jié)中創(chuàng)建的TestUnit中聲明一個新的類(先在Uses中加入Dialogs,TestExtensions)
TestSetupTest = class (TTestSetup)
protected
procedure SetUp; override; //初始化類
procedure TearDown; override; //清除數(shù)據(jù)
end;
加入實現(xiàn)代碼
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.
運行之后的結(jié)果如下:
注意TtestCaseFirst前面加了”[d]”。運行一次測試可以清楚看到TestSetupTest類中Setup和TearDown只運行了一次,而TtestCaseFirst中的Setup和TearDown運行了兩次
測試Exception
雖然TexceptionTestCase沒有實現(xiàn),但是Dunit在源碼附加examples estexception目錄中有一個如何測試Exception的例子。
主要的實現(xiàn)在procedure TTestMyObject.CheckException和procedure TTestMyObjectOverrideRunTest.RunTest中。具體的實現(xiàn)可以看代碼。