Быстрый старт

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

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

-

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

Download Now

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

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

define.jpg

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

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

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

2.1. Подключить в uses 2 модуля TestMeType и TestMeLevelType

uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs
       {$IFDEF TESTME}
     ,TestMeType,TestMeLevelType
       {$ENDIF}
    ;
2.2. Определить 2 метода для регистрации и тестирования класса _RegisterMethod и _TestMethods
type
    Tfrm_Calc = class (TForm )
       {$IFDEF TESTME}
         private
           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. Опишем методы которые будем тестировать, оставив методы пустыми

{$IFDEF TESTME}
 
  type
   TTestMethod = (tmDiv);
 
   var
    L_pIndexUnit,L_pIndexFormCalc,L_pIndexCalc
    :TPIndexValue;
 
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
       L_pIndexUnit:=IRegisterUnit(ltApplication,'Unit1','Unit Calculator components');
       L_pIndexFormCalc := IRegisterClass(TForm1._RegisterMethod,TForm1._TestMethods,'TForm1','Main form');
     end;
  end else
   showMessage('No Testme dll');
 
{$ENDIF}
end.

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

class procedure TCalc._RegisterMethod;
begin
 if not GetTestMe.bIsTestCode then Exit;
 with GetTestMe.ITestCode do begin
  if not ISetDefaultIndUnitClass(L_pIndexUnit,L_pIndexFormCalc) 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; //with
end;

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

5. Кодируем сам тест

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;

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

-

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

Download Now