![]() |
DunitX Testcase parameter
Hallo,
sind in Delphi die DUnitX Testcase Parameter auf Strings begrenzt? Kann ich über die Parameter keine Object-Instanzen übergeben? Mir würde sowas vorschweben:
Delphi-Quellcode:
Die Tests laufen erfogreich durch - in beiden Fällen ist aber "item" nil.
[Test]
[Testcase('with nil parameter','nil')] [Testcase('with correct parameter','TUserGroupData.Create("tester")')] procedure addUserGroup(item: TBasicElement); Grüße Klaus |
AW: DunitX Testcase parameter
Was erwartest du? Dass der Text genommen und zu Code kompiliert wird? :-D
Zitat:
Allerdings kannst du Testdaten auch anderes erzeugen, dazu musst du dir das TestCaseProviderAttribute anschauen - bestimmt gibts im DUnitX Verzeichnis oder in den Tests ein Beispiel wie das einzusetzen ist. |
AW: DunitX Testcase parameter
.. nein nicht direkt.
Wenn ich aber eine Instanz übergeben
Delphi-Quellcode:
Dann kompiliert das ganze nicht:
[Test]
[Testcase('with nil parameter','nil')] [Testcase('with correct parameter',TUserGroupData.Create('tester'))] procedure addUserGroup(item: TBasicElement); [dcc32 Error] TestUserGroupList.pas(17): E2250 There is no overloaded version of 'Create' that can be called with these arguments Integer werden auch als String übergeben und dann anscheinend konvertiert. Beispiel: ![]() Grüße Klaus |
AW: DunitX Testcase parameter
Zitat:
|
AW: DunitX Testcase parameter
folgende Units müssen eingebunden werden
(TestInsight ist nicht zwingend nötig)
Delphi-Quellcode:
Die Erstellung der Ableitung von TTestDataProvider.
uses
System.Generics.Collections, DUnitX.InternalDataProvider, DUnitX.TestDataProvider, DUnitX.Types, DUnitX.TestFramework, TestInsight.DUnitX, ...
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:
Der Testcase sieht dann "ganz normal" aus.
initialization
TestDataProviderManager.RegisterProvider('UserGroupDataAttributeProvider',TUserGroupDataAttributeProvider); TDUnitX.RegisterTestFixture(TestTUserGroupList); end.
Delphi-Quellcode:
Grüße
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; Klaus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:05 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz