33 Stimmen

Kann ich debuggen, während ein VS Unit Test läuft?

Ich möchte eine Benutzerkomponente, die benutzerdefinierte Ereignisse verwenden zu testen. wenn dies ohne VS Unit Test Framework debug.assert erfolgreich, wenn die gleiche Sache mit VS Unit Test Framework zu tun, behaupten scheitert dies unlogisch ist, so dass ich zu debuggen, während tun Unit Test mit VS-Framework möchten. Aber es scheint, ich kann nicht, weil Code nie Pause am Debug-Punkt, die ich festgelegt.

Gibt es also eine Möglichkeit, in diesem Fall eine Pause am Debug-Punkt zu erzwingen?

Update: Ich meine nicht im Testprojekt selbst, sondern im Zielprojekt, während das Testprojekt ausgeführt wird.

58voto

p.campbell Punkte 94960

Ja Mit dem Visual Studio Test-Projekt können Sie Haltepunkte setzen und Ihren Code schrittweise überprüfen.

Stellen Sie sicher, dass Sie Ihre Tests über das Menü Debuggen -- Tests -> Debuggen -> Tests im aktuellen Kontext ausführen. Verwenden Sie für eine beliebige Testklasse oder Testmethode das Tastaturkürzel Ctrl-R Ctrl-T .

Wenn sich der Cursor in einer Methode befindet ( entweder eine Prüfmethode oder der von der Prüfung erfasste Code ), bricht er an jedem Haltepunkt in dieser Methode oder an jedem Haltepunkt irgendwo im Codeausführungspfad ab. Wenn sich der Cursor auf der Klasse oder zwischen den Testmethoden befindet, werden alle Tests der Klasse ausgeführt. Haltepunkte werden hier wie oben beschrieben getroffen.

0 Stimmen

Ich habe vergessen, dass ich nicht das Testprojekt, sondern das Zielprojekt meine.

0 Stimmen

@user: Ja, jeder Haltepunkt wird getroffen, egal ob in der Testmethode oder in dem Code, der nachgelagert getestet wird.

0 Stimmen

Nur um @user 's Bemerkung hinzuzufügen, wenn Sie die Unit-Tests debuggen Sie in der Lage, zu stoppen und debuggen jeden Code, die Tests oder den getesteten Code SO LANGE, wie Sie den getesteten Code Quelle oder Debugger-Informationen haben, so dass Sie nicht in der Lage, in eine referenzierte DLL ohne Symbole Datei springen würde

35voto

Chris Bordeman Punkte 383

Die Antwort von P. Campbell ist nicht ganz richtig. Wenn Sie mit dem Debuggen eines Projekts (z. B. einer WCF-Services-Site) beginnen, ist es unmöglich, Unit-Tests zu starten, ob im Debug-Modus oder nicht. Die entsprechenden Optionen sind in Visual Studio 2012 einfach ausgegraut.

Das bedeutet, dass Sie nicht in der Lage sind, prozessfremden Code in einem Unit-Test zu debuggen. Sie können nur Code debuggen, der direkt im Prozess durch den Unit-Test aufgerufen wurde.

Dies ist ein großes Problem in VS2012, das sie jetzt beheben müssen.

1 Stimmen

Mir ist aufgefallen, dass Sie eine andere Instanz von Visual Studio verwenden können, um Ihren Code außerhalb des Prozesses zu debuggen.

4 Stimmen

@ChrisBordeman Das ist die einzige Möglichkeit. Öffnen Sie eine andere Instanz, führen Sie Ihre Tests von dort aus und setzen Sie Ihren Haltepunkt während des Debuggens des anderen Projekts. Komm schon VS, du bist besser als das!

2 Stimmen

Die Verwendung von zwei Instanzen von VS ist mühsam, funktioniert aber. Alternative: Setzen Sie einen Haltepunkt in UT, laufen Sie bis zu diesem Punkt und wählen Sie dann Debug->Attach to process. Das funktioniert prima. Ich habe keine Ahnung, warum es durch die UI eingeschränkt ist.

6voto

House Punkte 3206

In VS2015, wählen Sie:

Test->Debug->Alle Tests

Oder Sie markieren einen bestimmten Test im Editor und wählen

Test->Debug->Ausgewählte Tests

0 Stimmen

Dies gilt auch für VS2017.

0voto

Hedego Punkte 266

Klicken Sie im Test Explorer mit der rechten Maustaste auf den Testfall, den Sie debuggen möchten, und klicken Sie im Kontextmenü auf die Option Debuggen des ausgewählten Testfalls.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X