Typisches Szenario für mich:Wie erzeuge ich den Quellcode, um ein Objekt zu erstellen, das ich debugge?
- Der Code Vermächtnis ich arbeite, hat einen Bug, ein Client in der Produktion nur
- ich einen Debugger mit anhängen und herauszufinden, wie das Thema auf ihr System zu reproduzieren gegeben ihre Eingabe. Aber ich weiß nicht, warum der Fehler schon passiert ist. Jetzt
- Ich möchte einen automatisierten Test auf meinem lokalen System schreiben, um zu versuchen und zu reproduzieren dann fixieren den Bug
Dieser letzte Schritt ist wirklich schwer. Die Eingabe kann sehr komplex sein und viele Daten enthalten. Die Eingabe von Hand zu erstellen (zB: Stellen Sie sich vor, dies 1000 Mal zu tun, um das Objekt zu erstellen) ist sehr mühsam und fehleranfällig. Tatsächlich bemerken Sie vielleicht, dass in dem Beispiel, das ich gerade gegeben habe, ein Tippfehler vorliegt.
Gibt es eine automatisierte Möglichkeit, ein Feld aus einem Haltepunkt in meinem Debugger zu nehmen und den Quellcode zu generieren, die das Objekt schaffen würde, die gleiche Art und Weise bevölkert?
Das einzige, was ich habe kommen mit ist diese Eingabe zu serialisiert (mit Xstream, zum Beispiel). Ich kann das in einer Datei speichern und es in einem automatisierten Test wieder einlesen. Dies hat ein großes Problem: Wenn sich die Klasse auf bestimmte Weise ändert (zB: ein Feld/Getter/Setter-Name wird umbenannt), kann ich das Objekt nicht mehr deserialisieren. Mit anderen Worten, die Tests sind extrem fragil.
Könnten Sie erklären, warum etwas wie XStream nicht passt und warum Sie unbedingt Quellcode generieren müssen? Dies würde sicherlich helfen, bessere Antworten zu erhalten. –
Was ist das Problem mit der langfristigen Zerbrechlichkeit von Testfällen für einen Feldtest, den Sie JETZT lösen möchten? –
@IraBaxter Daran ist kurzfristig nichts auszusetzen. Aber wenn es da draußen eine coole Bibliothek/Technik/Strategie gibt, um damit besser fertig zu werden, als ich derzeit bin, würde ich gerne davon hören. –