![]() |
AW: Unit-Test für private/protected Member?
Zitat:
Man könnte das "private" und "protected" mit einer Compiler-Direktive zu "public" machen. Das ist zwar mehr "Methode Brechstange", aber geht. :thumb: |
AW: Unit-Test für private/protected Member?
Zitat:
Soweit mir bekannt, sollte es aber im Moment zum Glück keine größeren Probleme mit widerspenstigen Daten geben: alles hübsches XML in regelmäßiger Form. Und ich hoffe, das bleibt auch so. :lol: |
AW: Unit-Test für private/protected Member?
Zitat:
Zitat:
Zitat:
|
AW: Unit-Test für private/protected Member?
Zitat:
Auch das Aufteilen der Klasse bringt da nichts mehr. Es geht nicht um den Umfang der Klasse, sondern wie kompliziert die Logik ist, die umgesetzt wird. Weiterhin gibt es Unstetigkeiten, die man mit einfachen setzen von Eingangsvariablen, nicht mehr treffen kann. (also mit vertretbaren Aufwand) |
AW: Unit-Test für private/protected Member?
Es stimmt dass bei steigender Komplexität auch das Testen schwieriger wird. Dabei wird das Testen in diesen Fällen umso wichtiger, genauso wie sauberer, übersichtlicher, wartbarer - und eben testbarer - Code.
Zitat:
Zitat:
Code:
entsprechend muss transferToState getestet sein, aber dann sollte das Problem auch lösbar sein.
testInstance = TestClass.create('testValue');
testInstance.doSomething('withTestValue'); testInstance.testTargetMethod('anothertestvalue'); |
AW: Unit-Test für private/protected Member?
Ich würde den Ansatz von Zacherl bevorzugen.
In C# haben wir die Möglichkeit genutzt, Klassen als "partial" zu definieren. Die Unit-Tests haben dann einfach die Klasse ergänzt. Da Delphi alle Methoden einer Klasse in einer Quelldatei erwartet, sehe ich als einzige Möglichkeit, die Unit-Tests dort ebenfalls hineinzuschreiben. Im Relase lassen sich die Bereiche ja per ifdef ausblenden. Ganz schlecht wäre m.E. Code im Unit-Test-Fall zu modifizieren, da läuft man ganz schnell Gefahr, etwas Anderes zu testen als den Programmcode. Und - ein Unit-Test soll eine Methode testen, das ist in der Regel nicht eine komplexe Funktion, die gerade noch public erreichbar ist. |
AW: Unit-Test für private/protected Member?
Zitat:
|
AW: Unit-Test für private/protected Member?
Zitat:
Wichtig ist, das man Sperenzchen wie Threads und solchen Schnickschnack soweit wie möglich vermeidet, denn so ein Zeugs ist verdammt schwer zu testen. Wenn man Threads benutzen muss, dann am besten mit einem fertigen Framework, wie einer Jobqueue, Workerthreads oder ähnlichem. Überhaupt sollte alles, was die heile testbare Welt verlassen kann (eine 'Unit'), gekapselt werden, also nicht wie wild SQL-Befehler absetzen, wo es gerade passt oder eine Verbindung zu einer anderen Dimension herstellen. |
AW: Unit-Test für private/protected Member?
Unter dem Aspekt, dass Klassen in der selben Unit gegenseitig auf private und protected Felder zugreifen können, hatte ich es mal folgendermaßen realisiert:
In der Hauptunit implementiert man sich die RegisterUnitTest Funktion im Optimalfall so, dass alle Testobjekte in einer Liste abgelegt werden, die man dann beim großen Test einfach sequentiell durcharbeitet. |
AW: Unit-Test für private/protected Member?
Zitat:
Es gibt für jede Spezifizierung einer Klasse mehrere korrekte Implementierungen. Ein Unit-Test soll nicht prüfen ob eine bestimmte dieser korrekten Implementierungen verwendet wurde, sondern ob es sich überhaupt um eine korrekte Implementierung handelt, und beschreibt bei falschen Implementierungen, welche Verhaltensanforderung nicht erfüllt wurde. Zitat:
Mein Beitrag ging darauf ein, dass das Erreichen dieses Zustandes auch mit Hilfe von bereits getesteten Methoden der Klasse geschehen kann. Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:27 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