国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

Dunit的感悟

2019-11-18 18:18:12
字體:
來源:轉載
供稿:網(wǎng)友

Dunit的感悟

 

DunitTextTestRunner方式測試

DunitTextTestRunner測試方式中需在工程文件中引用TextTestRunner而非GUITestRunner。

DunitTextTestRunner測試方式中,Dunit提供了TRunnerExitBehavior數(shù)據(jù)類型,在dunitTRunnerExitBehavior的定義如下:

TRunnerExitBehavior = ( rxbContinue, rxbPause, rxbHaltOnFailures);

從該數(shù)據(jù)類型的定義可得知,該數(shù)據(jù)類型定義了TextTestRunner的退出行為,即何種方式結束當前的測試。只需在TextTestRunner執(zhí)行RunRegisteredTestsExitBehavior)時把需要的退出行為作為參數(shù)傳入,即可控制TextTestRunne的退出行為。具體如下:

    if  FindCmdLineSwitch('p', ['-', '/'], true)  then

      ExitBehavior := rxbPause

    else  if  FindCmdLineSwitch('h', ['-', '/'], true)  then

           ExitBehavior := rxbHaltOnFailures

   else

           ExitBehavior := rxbContinue;

  TextTestRunner.RunRegisteredTests(ExitBehavior);

 

TestCase的多種Registration方式

可用Test Suites,DunitExamplesRegistry用三個項目描述了不同的Registration

在第一個項目中PRoject文件如下

program RegistryTest;

uses

  TestFramework,

  GUITestRunner,

  RegistryUnitTest;

{$R *.RES}

function MasterTestSuite: ITestSuite;   //請注意該函數(shù)與單元文件的關系

begin

  Result := TTestSuite.Create;

  Result.AddTest(RegistryUnitTest.Suite);

end;

begin

  GUITestRunner.RunTest(MasterTestSuite);

end.

 

單元文件如下:

type

  TTestRegistry = class(TTestCase)

  private

    FInstallPath: string;

    FModData: string;

    FReg: TRegistry;

  public

    procedure Setup; override;

    procedure TearDown; override;

  published

    procedure TestRegistrySample;

  end;

  function Suite: ITestSuite;

implementation

function Suite: ITestSuite;     //請注意該函數(shù)與Project文件的關系

begin

  Suite := TTestSuite.Create(TTestRegistry);

end;

 

在第二個項目中Project文件如下(其它部分與第一項目相同)

function MasterTestSuite: ITestSuite;   //請注意該函數(shù)與單元文件的關系

begin

  Result := TTestSuite.Create;

  Result.AddTest(RegistryUnitTest.Suite);

end;

begin

  GUITestRunner.RunTest(MasterTestSuite);

end.

 

單元文件(其他部分與第一項目中單元文件相同)

function Suite: ITestSuite;    //請注意該函數(shù)與Project文件的關系

begin

  Suite := TTestRegistry.Suite;

end;

 

在第三個項目中Project文件如下(其它部分與第一項目相同):

function MasterTestSuite: ITestSuite;

begin

  Result := TTestSuite.Create;

  Result.AddTest(RegistryUnitTest.Suite);

end;

 

begin

  GUITestRunner.RunTest(MasterTestSuite);

end.

單元文件(其他部分與第一項目中單元文件相同)

function Suite: ITestSuite;    //請注意該函數(shù)與Project文件的關系

begin

  Suite := TTestSuite.Create(TTestRegistry);

end;

 

Registration的相關方法:

procedure RegisterTest(SuitePath: string; test: ITest); overload;

procedure RegisterTest(test: ITest);  overload;

procedure RegisterTests(SuitePath: string; const Tests: array of ITest);  overload;

procedure RegisterTests(const Tests: array of ITest);  overload;

function  RegisteredTests: ITestSuite;

procedure ClearRegistry;

 

DunitException測試:

TexceptionTestCase沒有實現(xiàn),但是Dunit源碼附加/examples/testexception目錄中有一個如何測試Exception的例子。主要的實現(xiàn)在procedure TTestMyObject.CheckExceptionprocedure TTestMyObjectOverrideRunTest.RunTest中。

在異常測試的例子中主要有三個方法,除前面所說的兩個外還有一個assert方法

procedure TTestMyObject.CheckException(AMethod: TTestMethod;

  AExceptionClass: ExceptionClass);

begin

  try

    AMethod;

    fail('Expected exception not raised');

  except

    on E: Exception do

    begin

      if E.ClassType <> AExceptionClass then

        raise;

    end

  end;

end;

 

 

procedure TTestMyObject.testMyObject;

begin

  try

    FMyObject.DoSomething;

  except

    assert(false);

  end;

end;

 

procedure TTestMyObjectOverrideRunTest.RunTest(testResult :TTestResult);

begin

  try

    inherited runTest(testResult);

    if FExpectedException <> nil then

      fail('Excepted Exception did not occur');

  except

     on E: Exception do

     begin

       if FExpectedException = nil then

         raise

       else

         if E.ClassType <> FExpectedException then

           raise;

     end;

  end;

  { clear the exception until the next test registers an Exception }

  FExpectedException := nil;

end;

 

 

Check的相關方法:

procedure Check(condition: boolean; msg: string = '');

procedure CheckEquals(expected, actual: extended; msg: string = '');

procedure CheckEquals(expected, actual: extended; delta: extended; msg: string = '');

procedure CheckEquals(expected, actual: integer; msg: string = '');   

procedure CheckEquals(expected, actual: string; msg: string = ''); 

procedure CheckEquals(expected, actual: boolean; msg: string = '');   

procedure CheckEqualsBin(expected, actual: longWord; msg: string = '';

digits: integer=32);

procedure CheckEqualsHex(expected, actual: longword; msg: string = '';

digits: integer=8);

procedure CheckNotEquals(expected, actual: integer; msg: string = '');   

procedure CheckNotEquals(expected: extended; actual: extended; delta: extended = 0;

msg: string = '');

procedure CheckNotEquals(expected, actual: string; msg: string = '');

procedure CheckNotEquals(expected, actual: boolean; msg: string = '');   

procedure CheckNotEqualsBin(expected, actual: longword; msg: string = '';

 digits: integer=32);

procedure CheckNotEqualsHex(expected, actual: longword; msg: string = '';

digits: integer=8);

procedure CheckNotNull(obj :IUnknown; msg :string = '');

procedure CheckNull(obj: IUnknown; msg: string = '');

procedure CheckSame(expected, actual: IUnknown; msg: string = '');   

procedure CheckSame(expected, actual: TObject; msg: string = '');

procedure CheckNotNull(obj: TObject; msg: string = '');

procedure CheckNull(obj: TObject; msg: string = '');

procedure CheckException(AMethod: TTestMethod; AExceptionClass: TClass;

 msg :string = '');

procedure CheckEquals(  expected, actual: TClass; msg: string = '');

procedure CheckInherits(expected, actual: TClass; msg: string = '');   

procedure CheckIs(obj :TObject; klass: TClass; msg: string = '');

 


上一篇:Pascal精要筆記

下一篇:老文章——TWebBrowser編程簡述

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網(wǎng)友關注

主站蜘蛛池模板: 湘潭市| 原阳县| 伊春市| 新蔡县| 连平县| 华安县| 玉林市| 罗平县| 垫江县| 钦州市| 伊宁市| 麟游县| 讷河市| 温宿县| 木兰县| 乐陵市| 凌海市| 盈江县| 和林格尔县| 通州市| 霞浦县| 平安县| 视频| 宜丰县| 江陵县| 宾川县| 关岭| 双流县| 东至县| 临武县| 炉霍县| 瑞昌市| 额尔古纳市| 牟定县| 永顺县| 大埔县| 安岳县| 红安县| 兴仁县| 凤庆县| 怀仁县|