Delphi-PRAXiS
Seite 4 von 4   « Erste     234   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Frage zu Propertys (https://www.delphipraxis.net/180607-frage-zu-propertys.html)

Sir Rufo 4. Jun 2014 12:07

AW: Frage zu Propertys
 
Mit einem/mehreren Interfaces kannst du dir eine große Testklasse bauen um dann den Teil zu testen, der diese Interfaces benutzt.

z.B. protokolliert die Testklasse jeden Interface-Aufruf.
Delphi-Quellcode:
TMockTest = class( TInterfacedObject, IFoo, IBar, IWeiss, IGelb )
...
end;
Bei einer/mehreren abstrakten Klasse/n geht das eben nicht.

alda 4. Jun 2014 12:15

AW: Frage zu Propertys
 
Zitat:

Bei uns wird nicht mit Unit-Tests (das ist ja hier im Zusammenhang mit Test gemeint, denk ich) gearbeitet. Nicht weil wir keine Fehler machen, sondern weil... (kann da jetzt kein Agument angeben, dass nicht irgendwer wieder entkräften könnte, aber es läuft auf "Zu Aufwendig für unsere kleinen Projekte" und "So ne neumodische Krams hammer he noch nie jemacht" hinaus).

Deswegen kenn ich mich da nicht aus und frag vllt. dumm. Aber wenn ich statt mit Interfaces mit abstrakten Vorfahren-Klassen arbeite könnte ich doch dagegen testen? Und im Gegensatz zu Interfaces kann es in abstrakten Klassen ja Felder geben und dementsprechend direkt durchgreifende Properties
Und wenn ein Nachfahre mal nicht direkt durchgreift, sondern getter und setter hat, merk ich das von aussen noch nicht mal.

Aber wie gesagt, kenne Unit-Testing nicht und vermute mal, dass diese Frameworks dafür mit Interfaces arbeiten?
Das mit dem zu "Aufwendig und neumodisch" war bei uns auch anfangs so. Was dieses Thema angeht kann ich Dir/Euch nur Uncle Bob ans Herz legen: http://cleancoders.com/
Denn Test-Driven Development ist alles andere, als aufwendig ;>

Naja also erst einmal kannst Du das nur, wenn alles was zu testen ist (also alles :P) auch vom Basis-Vorfahren implementiert wird. Das bedeutet wiederum, dass Du immer mit dem Typ der Basisklasse arbeiten musst (meineVariable: TBasisklasse) und damit koppelst Du die Verwendung wieder an eine Klasse (dann eben TBasisklasse). Hierfür müsstest Du dann deine Stubklassen für den Test vom Basis-Vorfahren ableiten und musst diese auch immer anpassen, sofern sich etwas (vielleicht irrelevantes für deinen Test) an der Basis-Klasse ändert.
Genau für diesen Fall sind eben nunmal Interfaces gedacht, auch wenn es Sprachen gibt, die dieses abstrakte Modell verfolgen (z.B. Python). Vererbung beschreibt nunmal eine gemeinsame Vorgehensweise und ein Interface eben eine gemeinsame Schnittstelle. Und für den Test unterscheidet sich die Vorgehensweise (die Implementierung) nunmal von der, der Basisklasse


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:39 Uhr.
Seite 4 von 4   « Erste     234   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz