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 = 'addUserGroup' then
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