![]() |
DUnit Vererbung/falsche Methode aufgerufen
Hallo,
ich versuche gerade ein paar Unit Test Fehler in der DEC zu beheben. Nach Korrektur eines Fehlers in den Testdaten bin ich jetzt über ein anderes mich verwirrendes Problem gestoßen. Es gibt im Unit Test eine Klasse TestTHash_Keccak_Base, von der erben alle Keccak Hash Testklassen. Die TestTHash_Keccak_Base wiederrum erbt von TestTHash_SHA3_Base, die wiederum von noch einer anderen erbt, was hier aber keine Rolle spielt. In der TestTHash_SHA3_Base gibt es eine strict protected Methode LoadTestDataFile. In der Methode wird eine Methode AddLastByteForKeccakTest aufgerufen. Diese ist als Virtual deklariert. Darf also überschrieben werden und liefert in der Klasse TestTHash_SHA3_Base nur das wieder zurück, was man als Parameter rein gesteckt hat. In der TestTHash_Keccak_Base soll die aber mit dem übergebenen Parameter einiges anstellen und dementsprechend käme auch was anderes zurück. In dieser Klasse ist die Methode als override gekennzeichnet. Nur: führe ich das aus, lande ich eindeutig in der Implementierung aus der Klasse TestTHash_SHA3_Base statt der aus TestTHash_Keccak_Base . Hat irgendwer eine Idee warum? Hier der Code: ![]() Grüße TurboMagic |
AW: DUnit Vererbung/falsche Methode aufgerufen
Bei welchem der Tests passiert das denn?
|
AW: DUnit Vererbung/falsche Methode aufgerufen
Sorry, hab's ich vergessen zu schreiben:
TestTHash_Keccak_224 TestCalcUnicodeString Grüße TurboMagic |
AW: DUnit Vererbung/falsche Methode aufgerufen
Also wenn ich diesen Test ausführe, lande ich in der Methode aus TestTHash_Keccak_Base. Die Base-Methode wird nie ausgeführt. :freak:
|
AW: DUnit Vererbung/falsche Methode aufgerufen
Hallo,
jetzt mal noch etwas ausführlicher: Ich lande beim Ausführen von TestTHash_Keccak_224.TestCalcUnicodeString in der TestTHash_SHA3_Base.LoadTestDataFile. Soweit noch so gut. Nur der AddLastByteForKeccakTest dort drin springt nicht nach TestTHash_Keccak_Base.AddLastByteForKeccakTest sondern nach TestTHash_SHA3_Base.AddLastByteForKeccakTest Grüße TurboMagic |
AW: DUnit Vererbung/falsche Methode aufgerufen
Liste der Anhänge anzeigen (Anzahl: 1)
Und das ist genau der eingecheckte Stand? Ich hatte es mit 10.4 und 11 getestet. Anbei der Screenshot von gestern.
Ich habe nur den einen Test durchlaufen lassen und auf TestTHash_SHA3_Base.AddLastByteForKeccakTest einen Haltepunkt gesetzt. Bei mir wird der nicht erreicht, dafür der in TestTHash_Keccak_Base. Anhang 55826 |
AW: DUnit Vererbung/falsche Methode aufgerufen
Moment! Mir dämmert was:
Im SetUp der Keccak_224 Test Klasse werden auch ein paar wenige Testdaten per Code hinzugefügt, also nicht aus der Datei geladen. Da wird die richtige Methode aufgerufen, der Breakpoint sollte also erst dann gesetzt werden, wenn SetUp durch ist bzw. einen breakpoint an der Stelle in der Datei Laden Methode aus der Basis Klasse setzen wo die Methode aufgerufen wird, die falsch aufgerufen wird. Sprich: die wird nur dort falsch aufgerufen wo das Laden der Daten aus der Datei stattfindet. Beim Definieren der Testdaten per Code wird die richtige Variante aufgerufen. Grüße TurboMagic |
AW: DUnit Vererbung/falsche Methode aufgerufen
Wie schon geschrieben: Ich komme gar nicht an der falschen Methode an, wenn ich nur den einen Test durchführe, und ich hatte mich außerdem auch in DUnit bis zum Ausführen der Methode durch debuggt.
|
AW: DUnit Vererbung/falsche Methode aufgerufen
Ich habe das nun auch mal ausprobiert und komme zu dem gleichen Ergebnis wie Sebastian: Es funktioniert wie erwartet.
|
AW: DUnit Vererbung/falsche Methode aufgerufen
Habe es auch nochmal getestet und ja, ich hab' da beim Ausführen was übersehen.
Jetzt muss ich die Algorithmen fixen, seufz! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:09 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