![]() |
AW: Wann hat sich die Funktion SecondsBetween geändert
Nochmal nachgedacht:
Aufgrund der bekannten Rundungen, an jede Zeit 'ne 1/4 Millisekunde dranhängen und an die Endezeit nochmal 'ne 1/4 Sekunde ... dann sollten die Rundungsfehler weg sein. Oder selber rechnen
Delphi-Quellcode:
.
Round(Abs(Zeit1 - Zeit2) * SecsPerDay)
|
AW: Wann hat sich die Funktion SecondsBetween geändert
Gibt es da nicht so eine tolle Erfindung wie Unittests?
Damit prüft man die eigenen Gebilde (und auch implizit das, was man mitverwendet). Im Zweifelsfall läuft es auf einen Compilerschalter hinaus, der bestimmt Unterschiede bei den Compilern eben berücksichtigt. Aber dieser Fehler rutscht dann nicht mehr durch. |
AW: Wann hat sich die Funktion SecondsBetween geändert
Zur Referenz noch die Diskussion, wo das Problem vor einigen Jahren auch schon auffiel:
![]() Zumindest mit Delphi 2010 stieß ich hier ebenfalls auch Ungereimtheiten und habe mir eine eigene, modifizierte Variante schreiben müssen, die korrekt rechnet. |
AW: Wann hat sich die Funktion SecondsBetween geändert
Zitat:
Ergo: Bei derart kritischen Routinen sollte man sich en Detail die Implementierung anschauen (was normalerweise bei Unittests eben nicht passiert, da man nach Spec testet) und die Einzelschritte testen (i.e. alle Codepfade). Oder besser: Eine Berechnung/Implementierung nach formal korrekter Spezifikation vornehmen. Und dann kann man wieder nach dieser Spec Tests schreiben und sich beruhigt zurücklehnen. |
AW: Wann hat sich die Funktion SecondsBetween geändert
Zitat:
|
AW: Wann hat sich die Funktion SecondsBetween geändert
siehe der andere Thread ->
![]() Es kommt jetzt darauf an, mit welchem der beiden Werte du zufällig deinen Unittest aufbaust. |
AW: Wann hat sich die Funktion SecondsBetween geändert
Zitat:
Ich für meinen Teil baue keine Unittests für die Standard-Delphi-Funktionen. Aber ich erstelle Funktionen, Klassen mit Methoden und diese benutzen auch die Delphi-Standard-Funktionen. Für diese meinen Funktionen, Klassen und Methoden erstelle ich Unittests. Wenn dort dann nicht die erwarteten Werte herauskommen, dann schlägt der Unittest für meine Methoden/Funktionen an. Warum das dann fehlerhaft ist, dass muss ich dann selber herausfinden. Das passe ich dann so an, dass es passt. Wenn eine neuere Delphi-Version dann andere Werte liefert, dann schlägt der Unittest wieder für meine Methoden/Funktionen an, weil die ja mit falschen Werten arbeiten. |
AW: Wann hat sich die Funktion SecondsBetween geändert
Ja, und nun kommt es darauf an, mit welchem Wert deine Funktion z.B. dieses SecondsBetween aufrufen würde.
Jenachdem kann der Test deiner Funktion erfolgreich sein, falls du zufällig einen der funktionierenden Fälle erwischts. |
AW: Wann hat sich die Funktion SecondsBetween geändert
Zitat:
Ich sehe so einen Unittest immer als ein lebendiges Gebilde an. |
AW: Wann hat sich die Funktion SecondsBetween geändert
Und wenn du jetzt in allen geprüften Situationen zufällig auf funktionierende Fälle triffst? :tongue:
Frag mal den Murphy :angel: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:05 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