Verwenden von DUnit aus der Delphi-IDE und Vermeiden von Haltepunkten bei Ausnahmen

8

Ich benutze Delphi XE und ich habe eine Projektgruppe, die die Hauptanwendung und eine DUnit-Testanwendung enthält. Von Zeit zu Zeit gehe ich in die DUnit-Testanwendung, um einige Tests hinzuzufügen und eine bestehende zu starten.

Einige Testcodes generieren Ausnahmen, die von der Anwendung gehandhabt werden, aber vom Delphi-Debugger mehrfach angezeigt werden, da ich gewohnt bin, die Testanwendung mit der Verknüpfung F9 auszuführen, wie bei der Standardanwendung : Das ist in diesem Fall nicht sehr praktisch.

Ich kenne die SHIFT + STRG + F9 Verknüpfung, um ohne Debuggen zu laufen, und das ist großartig, wenn ich mich erinnere um es zu benutzen, aber ich finde oft, dass ich F9 anklicke, dann grunze, dann die Testanwendung schließe und dann SHIFT + CTRL + F9 . Was für ein Zeitverlust.

Also meine Frage: Gibt es einen besseren Weg? Kann ich einige Einstellungen definieren oder einen Experten verwenden, um diese bestimmte Anwendung standardmäßig ohne Debugging auszuführen? Sicherlich bin ich nicht der Einzige, der dieses Problem hat.

Vielen Dank im Voraus.

    
jonjbar 08.02.2011, 10:16
quelle

5 Antworten

5

Nein (zumindest nicht bis D2009). Ausführen ohne Debugging ist eine IDE-Sache. Ein ciler Flag würde nicht helfen, da es die IDE ist, die die exe hakt, nicht umgekehrt. Der einzige Ort, wo Sie eine solche Option haben könnten, wäre in den Projekteinstellungen. Aber die IDE könnte leicht verwirrend werden, da die normale Unterscheidung zwischen Run und Run ohne Debugging aufgehoben würde. Sie benötigen dann eine dritte Option, die ich rate, "Ausführen", "Ausführen mit Debugging" und "Ausführen ohne Debugging", wobei das einfache "Ausführen" die Projektoptionen übernehmen würde.

    
Marjan Venema 08.02.2011, 11:45
quelle
2

Fügen Sie der Symbolleiste das Symbol zum Ausführen ohne Debuggen hinzu. Ihr Problem ist, dass Sie den Hotkey vergessen und auf das Symbol klicken. Entfernen Sie also das andere Symbol, oder verschieben Sie sie wie folgt:

Je größer Ihre Anwendung wächst, desto langsamer wird der Start des Debuggers. Ich laufe jetzt ungefähr 99% der Zeit ohne Debugging, da die Startzeit meiner App von 2 Sekunden auf 2 Minuten geht, da sie viele Laufzeitpakete verwendet und jeder BPL-Ladevorgang im Debugger mit einem großen Treffer kommt meine Produktivität. Lange, langsame, schmerzhafte Erfahrung hat mich dazu gebracht, mich selbst zu fragen: "Muss ich wirklich debuggen?". Wenn nicht, klicke ich auf das schöne grüne Symbol (in XE), das das Ausrufezeichen in älteren Versionen ersetzt. (Eine intelligente UI Verbesserung denke ich.). In früheren Versionen von Delphi bedeutete die grüne Schaltfläche "Ausführen mit Debugging".

    
Warren P 08.02.2011 14:06
quelle
2

Deaktivieren Sie "Bei Sprachausnahmen benachrichtigen".

    
Rafael Colucci 08.02.2011 20:59
quelle
0

Nun, irgendwie. Sie können Breakpoints ohne Unterbrechung verwenden [McKeeth] [Jensen] , um die Ausnahmen zu ignorieren, die Sie in Ihren Tests erzwingen. Die einzige Möglichkeit, Haltepunkte zu speichern, die ich kenne, besteht darin, Tools & gt; Optionen & gt; Autosave & gt; Projektdesktop.

    
Kenneth Cochran 08.02.2011 17:34
quelle
0

Ich verstehe Ihr Problem, aber ich persönlich halte es nicht für sinnvoll, das Standardverhalten von F9 zu ändern.

Sie haben einige Testfälle, von denen Ausnahmen erwartet werden. (ANMERKUNG: Ich denke tatsächlich an Tests, die nach bestimmten Ausnahmen suchen, wenn schlechte Eingaben gegeben werden. Nicht Ausnahmen werden von der Anwendung gehandhabt.) Und ich stimme zu, dass es keinen Sinn hat, darauf hingewiesen zu werden die meisten Umstände. Eine Ausnahme in anderen Testfällen wäre jedoch ein Problem, auf das ich so schnell wie möglich aufmerksam gemacht werden sollte.

Also ist mein bevorzugter Laufmodus normalerweise, über Ausnahmen informiert zu werden. Und expliziten Code in bestimmten Testfällen, der die Ausnahmebenachrichtigung nur im Kontext der Tests explizit deaktiviert, die Produktionscode-Ausnahmen auslösen.

Ich habe eine Technik, die dafür sehr gut funktioniert.

In einem Test, der Ausnahmen auslösen soll, schreibe ich den folgenden Code:

%Vor%

Ich denke, Sie wollen den Quellcode für diese beiden Methoden? :)

%Vor%

Wo ist der Rest, den du fragst? Es gibt keine - das ist es!

... aber es gibt ein paar Anweisungen, denen Sie folgen müssen:

  • Fügen Sie jeder Methode einen Haltepunkt hinzu.
  • Bearbeiten Sie die Haltepunkteigenschaften.
  • Wählen Sie erweiterte Optionen.
  • Deaktivieren Sie die Option "Abbrechen"
  • Und aktivieren Sie die Optionen "Ignoriere nachfolgende Ausnahmen" und "Behandle nachfolgende Ausnahmen" für die entsprechende Methode.

Dies steht in der Nähe von jpfollenius ' Idee für Optionen der Compiler-Richtlinie. Es spricht auch David Bedenken Sie, wie Sie diese Ausnahmen erneut aktivieren. Sie müssen lediglich die Haltepunkte deaktivieren, damit alle Ausnahmen erneut gemeldet werden.

Zusätzliche Gedanken:

Sie erwähnen:

  

Einige Testcodes generieren Ausnahmen, die von der Anwendung behandelt werden.

Wenn Ihre Anwendung alle diese Ausnahmen behandelt, dann:

  • Sind Ihre Tests ausreichend lokalisiert? Wenn Sie solche großen Funktionsbereiche testen, sind die Tests eher Systemtests - und können sehr schwierig zu warten sein.
  • Machen Sie zu viele Ausnahmen für die Hauptgeschäftsabwicklung?
  • Tut Ihre Anwendung eine ganze Menge unpassender Ausnahme-Schluckbeschwerden?

Im Grunde erscheint es mir irritierend, dass Ihre Formulierung "eine Reihe von Ausnahmen, die Sie nicht allzu sehr beunruhigen, da sie" behandelt "werden. Viele Leute machen den Fehler zu denken, dass sie mit einer Ausnahme umgehen , wenn sie wirklich nur sie schlucken und die Grundprobleme verstecken.

    
Craig Young 18.08.2014 22:30
quelle

Tags und Links