Быстрый старт (подробно)

Здесь вы научитесь как правильно тестировать методы.

Итоговый тест приложения (видео)

-

Скачай и попробуй

Download Now

Настройки проекта

Установить DEFINE в опциях проекта.
Определите в опциях «Conditionals Define» - TESTME для тестирования и удалите когда захотите отключить код тестирования в приложении.

define.jpg

Как зарегистрировать класс для тестирования

1. Создадим мини проект для тестирования. Операция деления DIV (видео)

2. Добавим код для тестирования (видео)

2.1. Подключить в uses модули TestMe

uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs
       {$IFDEF TESTME}
        ,TestMe,TestMe_Types
        ,TestCodeType, TestCodeLevelUnits
       {$ENDIF}
    ;

2.2. Определить 2 метода для регистрации и тестирования класса _RegisterMethod и _TestMethods

type
    Tfrm_Calc = class (TForm )
       {$IFDEF TESTME}
         private
           class var F_pIndexClass:TPIndexValue;
           class Procedure _RegisterMethod;
           class Function _TestMethods( IMethod:IRunMethodParam):TTestResultParam;
         {$ENDIF}
    public

2.3.Определить и закодировать методы которые будете тестировать

public
       Function Divide(iA,iB:integer):integer;
 ....
function TForm1.Divide(iA, iB: integer): integer;
begin
 result:=iA div iB;
end;

2.4. Определим блок кода для тестирования

1. Ограничим блок DEFINE для тестирования

2. Опишем методы которые будем тестировать, полное описание в пунктах 4 и 5.

{$IFDEF TESTME}
  type
   TTestMethod = (tmDiv);
 
class procedure Tfrm_Calc._RegisterMethod;
begin
 
end;
 
class function Tfrm_Calc._TestMethods(IMethod: IRunMethodParam): TTestResultParam;
begin
 
end;

3. Зарегистрируем модуль который будем тестировать в блоке initialization

initialization
  if GetTestMe.bIsTestCode then begin
     with GetTestMe.ITestCode do begin
        TForm1.F_pIndexClass := IRegisterClass(TForm1._RegisterMethod,TForm1._TestMethods,'TForm1','Test many reg methods');
     end;
  end;
{$ENDIF}
end.

4. Зарегистрируем методы которые будем тестировать в процедуре _RegisterMethod.

class procedure TCalc._RegisterMethod;
begin
 if not GetTestMe.bIsTestCode then  Exit;
 with GetTestMe.ITestCode do begin
  if not ISetDefaultIndClassUnitApp(F_pIndexClass) then exit; // Set position
 
   IRegisterMethod(tmDiv  ,'tmDiv'  ,'Test Div operation');// Test methods
    IRegisterMethodParams([15,5],[3],'15 div 5=3'); // True result
    IRegisterMethodParams([2,2],[1],'2 div 2=1');   // True result
    IRegisterMethodParams([4,4],[4],'4 div 4<>4 True=Error'); // Error
    IRegisterMethodParams([4,4],[4],'4 div 4=4 trError it''s Ok',trError); // Error = Ok
    IRegisterMethodParams([4,0],[4],'4 div 0 (!) Exception'); // Exception
    IRegisterMethodParams([4,0],[4],'4 div 0 (!) trException it''s Ok',trException); // Exception = Ok
 end; //withend;
end;

Видео с кратким описанием:

5. Кодируем сам тест в функции _TestMethods.

class function TCalc._TestMethods(
  IMethod: IRunMethodParam): TTestResultParam;
begin
 case TTestMethod(IMethod.IGetNumParamUser)  of
    tmDiv: begin
             if (Form1.divide(IMethod.IGetArrParam(0).AsInteger,IMethod.IGetArrParam(1).AsInteger)
               =
                IMethod.IGetArrResultForTestMethod(0).AsInteger) then
              result:=trOk
             else
              result:=trError;
           end;
  end; // case
end;

Итоговый тест приложения (видео)