![]() |
Unittest - Kopieren einer Klasse
Hallo allerseits,
wir haben hier einige Datenhaltungsklassen, die zusätzlich noch eine Methode zum kopieren des Objektinhalts haben, im einfachsten Falle so:
Delphi-Quellcode:
Wie geht man hier das Thema Unittesting am besten an?
TFoo = class
strict protected FBar: Integer; public property Bar: Integer read FBar write FBar; procedure Assign(const Source: TFoo); end; procedure TFoo.Assign(const Source: TFoo); begin self.FBar := Source.Bar; end; - Gar nicht testen? - Im Test prüfen, dass Bar korrekt gesetzt ist - sollte irgendwann eine neue Property hinzukommen, muss man daran denken, dafür einen neuen Unittest zu schreiben - bis dahin laufen die Unittests durch, auch wenn die neue Property nicht korrekt gesetzt wird - Im Test prüfen, dass alle Properties korrekt gesetzt sind, also auch derzeit noch nicht bekannte (wie??) - Irgendwie ganz anders? Das verwendete Framework ist DUnit, Delphiversion ist XE3. |
AW: Unittest - Kopieren einer Klasse
TFoo die
Delphi-Quellcode:
hinzufügen, Tests dafür schreiben. Der Test ob Assign funktioniert beschränkt sich dann ob nach einem Assign(..) dann Equals(..) True zurück liefert. :stupid:
function Equals(const other: TFoo): Boolean
Zitat:
Mein Weltbild ist manchmal schockierend simpel. |
AW: Unittest - Kopieren einer Klasse
Zitat:
Delphi-Quellcode:
Assign
Delphi-Quellcode:
wie erwartet
Equals
Delphi-Quellcode:
zurückliefert. Mehr nicht.
true
War das so gewollt? Über RTTI würde ich keinen Vergleich machen, wohl aber die Eigenschaftsnamen abfragen und mit denen vergleichen, die im Test berücksichtigt werden. Dann gibt es eine Meldung darüber und man kann den Test anpassen. |
AW: Unittest - Kopieren einer Klasse
Zitat:
Delphi-Quellcode:
muss ich vertrauen. Wenn man unter Assign() jetzt etwas anderes versteht als die "subjektive Gleichheit" dann passt das natürlich nicht. Wie gesagt, in meinem simplen Weltbild ist das so.
Equals(..)
Interne Caches wären jetzt etwas das ich bspw. weder mit Assign() übertragen würde, noch mich bei einer Gleichheit wie Equals() interessieren würde. |
AW: Unittest - Kopieren einer Klasse
Zitat:
Ich habe so meine Bedenken bei sich selbst anpassenden Tests. |
AW: Unittest - Kopieren einer Klasse
Zitat:
![]() Aber schlussendlich führt es zu besserem Code, da man sich in aller Regel vorher Gedanken macht (da man ja den Test schreiben muss), sowohl über die API als auch über die Implementierung. Testen von Methode A durch Aufrufen von Methode B halte ich für ziemlich fehleranfällig. |
AW: Unittest - Kopieren einer Klasse
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:51 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