AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Vorgehen Unittests bei ähnlichen Regelwerken
Thema durchsuchen
Ansicht
Themen-Optionen

Vorgehen Unittests bei ähnlichen Regelwerken

Ein Thema von Lemmy · begonnen am 29. Apr 2015 · letzter Beitrag vom 29. Apr 2015
Antwort Antwort
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.380 Beiträge
 
Delphi 10.3 Rio
 
#1

Vorgehen Unittests bei ähnlichen Regelwerken

  Alt 29. Apr 2015, 06:34
Hallo,

ich setze gerade eine Regelprüfung für ein Vertragswerk um, vereinfacht gesagt ist das eine Eingabeprüfung auf Kombinationen, d.h. gebe ich am Tag X den Wert A ein, darf ich an dem Tag kein B, C und D eingeben aber ein E.
Da ich in das Tagesgeschäft mehr mit Unittests machen will, prüfe ich das ganze darüber ab.


Nun gibt es in diesem großen Vertragswerk mehrere Unterverträge, die alle recht identisch sind. Wäre alles gleich, würde eine Klasse für die Regelprüfung reichen, aber es gibt halt kleine Abweichungen:

Vertrag 1: gebe ich am Tag X den Wert A ein, darf ich an dem Tag kein B, C und D eingeben aber ein E.
Vertrag 2: gebe ich am Tag X den Wert A ein, darf ich an dem Tag kein B, C, D und E eingeben.
Vertrag 3: wie Vertrag 1
Vertrag 4: wie Vertrag 1
Vertrag 5: wie Vertrag 2
Vertrag 6: nochmal anders


für die Regelprüfung kann ich das ja recht gut zusammen fassen und per Vererbung von einer Basisklasse gleiche Prüfungen ableiten und kleine Unterschiede in der Kindklasse ändern.

Nur was ist mit den Unittests für die einzelnen Unterverträge? Wenn ich für jeden Untervertrag alle Prüfungen in eine eigene Testklasse packe, dann gibt das jede Menge copy-Paste-Code. Oder geht man in dem Fall auch her und baut sich eine abstrakte Basis-Testklasse und ruft dann in den abgeleiteten Testklassen für die Unterverträge nur noch die entsprechenden Regelprüfungen auf?

Oder denke ich hier viel zu "konkret" und müsste hier abstrakter vorgehen?
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#2

AW: Vorgehen Unittests bei ähnlichen Regelwerken

  Alt 29. Apr 2015, 07:05
Ja, eine Basisklasse für Tests (die nicht abstrakt sein muss) von der andere Testklassen abgeleitet sind ist ein Weg Copy/Paste zu vermeiden. Im Standardwerk "xUnit Test Patterns" wird dies "Testcase Superclass" genannt. Voraussetzung dafür ist dass die benötigten fachlichen Klassen alle von der Testcase Superclass aus "sichtbar" sind. Es gibt einige verwandte Patterns die alle darauf abzielen in den Tests "Test Helper" zu benutzen in denen wiederverwertbarer Code enthalten ist. Anstatt in einer Superklasse können Test Helper Methoden auch in einer separaten Klasse gesammelt werden - von der dann im Test (z.B. im Setup) eine Instanz erzeugt wird.
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#3

AW: Vorgehen Unittests bei ähnlichen Regelwerken

  Alt 29. Apr 2015, 07:36
Achtung! Bei Verwendung dieses Patterns unbedingt darauf achten, ob die zu testenden Units auch strukturell identisch sind. Es kann auch sein, das dies eine willkürliche Entscheidung ist, die sich jederzeit ändern kann.

Wenn dem so ist, und man voneinander abgeleitete Testklassen hat, rennt man gegen die Wand, wenn sich in den Verträgen das Verwandschaftsverhältnis ändert.

Daher sind Testhelper eher geeignet, die 'zufällige' Gemeinsamkeit im Test mit DRY abzubilden.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:05 Uhr.
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