Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Einen TStringStream absichtlich zerstören (https://www.delphipraxis.net/179983-einen-tstringstream-absichtlich-zerstoeren.html)

S.Langhammer 15. Apr 2014 15:29

Einen TStringStream absichtlich zerstören
 
Tag auch.
Schreibe grade Unittests und brauche dazu TStringStream, in dem wirklich nichts sinnvoll Interpretierbares steht.

Kennt jemand eine Methode einen Stream vollends zu zerschießen?

Dejan Vu 15. Apr 2014 15:42

AW: Einen TStringStream absichtlich zerstören
 
Delphi-Quellcode:
Procedure SomeProcedureOrMethod;
var
  s : String;
  st : TStringStream;

begin
  setLength(s,1024);
  st := TStringStream.Create(s);
Ich schätze, nun steht nichts sinnvolles drin. Du kannst aber in den string auch etwas nicht Sinnvolles reinschreiben.


Nebenbei: Unittests mit Stringstreams, 'in dem wirklich nichts sinnvoll Interpretierbares steht' ist kein Unittest, sondern Unittestroulette. Lass es und schreib etwas deterministisch sinnloses rein.

Sir Rufo 15. Apr 2014 15:52

AW: Einen TStringStream absichtlich zerstören
 
Geht es darum eine zerstörte Stream-Instanz zu erkennen oder um Sinnloses im Stream?

Eine zerstörte Instanz macht allerdings keinen Sinn und richtig zuverlässig testbar ist es auch nicht.

Zum Sinnlosen hat sich mein Vorredner schon ausgelassen, dem ich nichts konstruktives hinzufügen kann ;)

S.Langhammer 16. Apr 2014 07:09

AW: Einen TStringStream absichtlich zerstören
 
Ich bräuchte eine zerstörte Stream-Instanz.
Ich will vorsätzlich eine Exception auslösen und dachte, damit würde ich es schaffen.
Das das Ganze ein wenig an Roulette dacht ich mir schon. Nur will ich daraus Russisch-Roulett mit 8 Kugeln machen.

Nersgatt 16. Apr 2014 07:12

AW: Einen TStringStream absichtlich zerstören
 
Das Problem bei solchen Sachen ist, dass es mehr oder weniger Zufall ist, was dann in dem Stream steht. Das könnte was sinnvolles sein, oder auch etwas nicht sinnvolles. Ob etwas sinnvoll ist oder nicht, das liegt ja im Ermessen Deines Programms.

Du musst das anders angehen. Du musst Dir überlegen, in welchen Fällen die Exceptions ausgelöst werden muss. Und auf diese Fälle musst Du in den Unittests prüfen.

S.Langhammer 16. Apr 2014 07:30

AW: Einen TStringStream absichtlich zerstören
 
Guter Punkt.
Ich werds mal von der Seite her angehen.

BUG 16. Apr 2014 19:23

AW: Einen TStringStream absichtlich zerstören
 
Du kannst dir einen Nachfahren von TStream schreiben, der sich so verhält, wie du möchtest. Damit kannst du dann Fehler provozieren bzw. testen.
Das wäre dann ein Mock-Objekt. Guck dir auch den englischen Eintrag an, der ist ausführlicher.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:17 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