Einzelnen Beitrag anzeigen

Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.757 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: DunitX Testcase parameter

  Alt 17. Feb 2020, 06:37
folgende Units müssen eingebunden werden
(TestInsight ist nicht zwingend nötig)
Delphi-Quellcode:
uses
  System.Generics.Collections,
  DUnitX.InternalDataProvider,
  DUnitX.TestDataProvider,
  DUnitX.Types,
  DUnitX.TestFramework,
  TestInsight.DUnitX,
  ...
Die Erstellung der Ableitung von TTestDataProvider.

Delphi-Quellcode:
type
  TTestData = record
    userGroupData: TBasicElement;
    expectedListCount: Integer;
  end;

  TUserGroupDataAttributeProvider = class(TTestDataProvider)
    private
      fList : TList<TTestData>;
      procedure initTestData;
    public
      constructor Create; override;
      function GetCaseCount(const Methodname:string):integer; override;
      function GetCaseName(const Methodname:string):String; override;
      function GetCaseParams(const Methodname:string;const casenr:integer):TValuearray; override;
      Destructor Destroy;override;
  end;

  [TestFixture]
  TestTUserGroupList = class(TObject)
  public
    [Test]
    procedure CreateUserGroupList;
    [Test]
    [TestCaseProvider('UserGroupDataAttributeProvider')]
    procedure addUserGroup(item: TBasicElement; expected: Integer);
  end;

Delphi-Quellcode:
constructor TUserGroupDataAttributeProvider.create();
begin
  inherited;
  fList := TList<TTestData>.Create();
  initTestData;
end;

destructor TUserGroupDataAttributeProvider.Destroy;
begin
  fList.Free;
  inherited;
end;

function TUserGroupDataAttributeProvider.GetCaseCount(const Methodname: string): integer;
begin
  result := fList.Count;
end;

function TUserGroupDataAttributeProvider.GetCaseName(const Methodname: string): String;
begin
  result := '';
  if Methodname = 'addUserGroupthen
    result := 'TestAddUserGroup';
end;

function TUserGroupDataAttributeProvider.GetCaseParams(const Methodname: string;
  const casenr: integer): TValuearray;
begin
  SetLength(result,0);
  if (Casenr >=0) and (Casenr < flist.count) then
  begin
    SetLength(result,2);
    result[0] := fList[CaseNr].userGroupData;
    result[1] := fList[CaseNr].expectedListCount;
  end;
end;

// TestDaten
procedure TUserGroupDataAttributeProvider.initTestData;
var
  item: TTestData;
begin
  item.userGroupData := nil;
  item.expectedListCount := 0;
  fList.Add(item);
  item.userGroupData := TUserGroupData.create();
  item.expectedListCount := 0;
  fList.Add(item);
  item.userGroupData := TUserGroupData.create('tester');
  item.expectedListCount := 1;
  fList.Add(item);
end;
Delphi-Quellcode:
initialization
  TestDataProviderManager.RegisterProvider('UserGroupDataAttributeProvider',TUserGroupDataAttributeProvider);
  TDUnitX.RegisterTestFixture(TestTUserGroupList);
end.
Der Testcase sieht dann "ganz normal" aus.
Delphi-Quellcode:
procedure TestTUserGroupList.addUserGroup(item: TBasicElement; expected: Integer);
var
  userGroupList: TUserGroupList;
  itemCount: Integer;
begin
  userGroupList := TUserGroupList.Create();
  try
    try
      itemCount := userGroupList.Count;
      userGroupList.addNew(item);
      assert.AreEqual(expected, userGroupList.count - itemCount,'ok');
    except
      on e:Exception do
        assert.Fail(e.Message);
    end;
  finally
    userGroupList.Free;
  end;
end;
Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat