Wäre es nicht sinnvoller, gleich mit DUnitX zu testen.
Nein, wäre es nicht. Die DSharp Extensions für DUnit funktionieren hervorragend (und die gibt's schon länger als DUnitX).
Verwende ich
Zitat:
published
bekomme ich eine
AV mit dem Hinweis auf DSharp.Core.Reflection.pas ???
Was mache ich denn falsch?
Ich hab deinen Test gerade erfolgreich ausgeführt. 4 grüne Tests mit den entsprechenden Parametern.
Getestet habe ich sowohl mit den Ständen aus master und feature/spring4d-compatibility und auf XE und XE5.
Welche Version von DSharp benutzt du auf welcher Delphi Version? Und wo genau kommt die
AV?
Nachtrag:
Ich bekomm zwar keine
AV aber ich seh, wo das Problem ist (und die Tests sollten ja eigentlich rot sein ^^).
Erstens müssen die Argumente durch ein Semikolon getrennt werden und der String muss nicht doppelt gequotet werden.
Dann gibt es derzeit noch die kleine Niggeligkeit, dass das Float umwandeln von den locale Settings auf deinem System abhängig ist.
Ich musste für korrekte Werte das also so schreiben:
Delphi-Quellcode:
[TestCase('c:\temp;1;3,1415')]
[TestCase('d:\temp;1;3,1415')]
[TestCase('e:\temp;1;3,1415')]
[TestCase('f:\temp;1;3,1415')]
Für einen Punkt als Dezimaltrenner muss DSharp.Core.Reflection.ConvStr2Float entsprechend angepasst werden.
Du kannst dir aber auch eine eigene Attribut Klasse für deinen Test bauen (leider unterstützt Delphi keine open arrays in Attributen, daher der zugegebenermaßen hässliche Workaround mit nem String - den macht DUnitX übrigens auch nicht anders), die sähe dann so aus:
Delphi-Quellcode:
type
CustomParamsTestCaseAttribute = class(TestCaseAttribute)
public
constructor Create(StartFolder: String; StartValue: Integer; StartParam: Real);
end;
constructor CustomParamsTestCaseAttribute.Create(StartFolder: String;
StartValue: Integer; StartParam: Real);
begin
SetLength(FValues, 3);
FValues[0] := StartFolder;
FValues[1] := StartValue;
FValues[2] := StartParam;
end;
Dann kannst du über deinen Test schreiben:
Delphi-Quellcode:
[CustomParamsTestCase('c:\temp', 1, 3.1415)]
[CustomParamsTestCase('d:\temp', 1, 3.1415)]
[CustomParamsTestCase('e:\temp', 1, 3.1415)]
[CustomParamsTestCase('f:\temp', 1, 3.1415)]