2017-11-02 4 views
1

In Version 1.17.2 von VSCode (mit installierter C# -Extension) habe ich über dotnet new mstest ein MSTest-Projekt zu einem Lösungsordner hinzugefügt und einen Verweis auf die zu testende Baugruppe mit dotnet add <project_path> hinzugefügt.Wie debuggt man einen MSTest in VSCode?

Angesichts der beiden folgenden VSCode-Aufgaben kann ich die Tests erfolgreich erstellen und ausführen; d. h. alles baut, die Komponententests laufen und passieren.

{ 
    "version": "2.0.0", 
    "tasks": [ 
     { 
      "taskName": "build", 
      "command": "dotnet build src/tests/tests.csproj", 
      "type": "shell", 
      "group": { 
       "kind": "build", 
       "isDefault": true 
      }, 
      "presentation": { 
       "reveal": "silent" 
      }, 
      "problemMatcher": "$msCompile" 
     }, 
     { 
      "taskName": "test", 
      "command": "dotnet test src/tests/tests.csproj", 
      "type": "shell", 
      "group": { 
       "kind": "test", 
       "isDefault": true 
      }, 
      "presentation": { 
       "reveal": "silent" 
      }, 
      "problemMatcher": "$msCompile" 
     } 
    ] 
} 

Ich kann jedoch keine Breakpoints treffen oder den Komponententest mit dem integrierten Debugger auf andere Weise durchlaufen. Die nächste Startkonfiguration, die ich entwickelt habe, führt die Tests aus, aber der Debugger trifft keine Breakpoints oder hängt an irgendwas an.

{ 
     "name": "test", 
     "type": "coreclr", 
     "request": "launch", 
     "preLaunchTask": "build", 
     "program": "dotnet", 
     "args": ["test"], 
     "cwd": "${workspaceRoot}/src/tests", 
     "stopAtEntry": true, 
     "console": "internalConsole" 
    } 

Ich kann etwas Grundsätzliches fehlt aber wie funktioniert ein Start oder die vscode C# Debugger an einem MSTest Unit-Test anschließen?

Antwort

1

In Fehlen einer elegantere Lösung, landete ich tun dies:

eine mit dieser launchMsTestAndWaitForDebugger.bat Datei erstellen:

set VSTEST_HOST_DEBUG=1 
dotnet test Path\\To.Your\\Tests.csproj 

Diese dotnet test starten wird, und warten Sie ein Debugger angeschlossen werden. Rennen wird es auch den Prozess-ID angezeigt werden, die später helfen werden ..

Starting test execution, please wait... 
Host debugging is enabled. Please attach debugger to testhost process to continue. 
Process Id: 13292, Name: dotnet 

Next ich eine Aufgabe in tasks.json erstellt diese .bat-Datei ausführen:

{ 
    "label": "Start MS Test", 
    "type": "shell", 
    "isBackground": true, 
    "command": "${cwd}\\Path\\To.Your\\launchMsTestAndWaitForDebugger.bat", 
    "presentation": { 
     "echo": true, 
     "reveal": "always", 
     "focus": false, 
     "panel": "shared" 
    }, 
    "problemMatcher": [] 
} 

wir also jetzt kann dotnet test starten und auf einen debugger warten, toll. Stellen Sie sicher, dass Sie einen Eintrag in launch.json haben ein Verfahren zur Befestigung:

{ 
     "name": ".NET Core Attach", 
     "type": "coreclr", 
     "request": "attach", 
     "processId": "${command:pickProcess}" 
    } 

Jetzt ctrl+shift+p und führen Sie die Start MS Test Aufgabe. Suchen Sie in der Ausgabe nach der Prozess-ID. Starten Sie mit der .NET Core Attach Definition, wählen Sie den richtigen Prozess und drücken Sie Play. Voila:

enter image description here

Verwandte Themen