Einzelnen Beitrag anzeigen

Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.009 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#4

AW: Dsharp unit testing , AV nicht verstanden

  Alt 14. Apr 2015, 07:08
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)]
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight

Geändert von Stevie (14. Apr 2015 um 07:36 Uhr)
  Mit Zitat antworten Zitat