visual studio sangria para net guide for español debugger debuggear debug configurar como code chrome asp debugging visual-studio-code .net-core

debugging - sangria - Depuración de pruebas xUnit en.NET Core y Visual Studio Code



visual studio code español (4)

Estoy en una Mac, ejecutando .NET Core 1.0 y Visual Studio Code.

Tengo un proyecto de consola y un proyecto de prueba. He configurado launch.json para poder depurar el proyecto de la consola.

¿Cómo configuro una configuración de inicio que inicie mis pruebas unitarias y adjunte el depurador?


Pude ejecutar el depurador en un proyecto completo de xUnit con la siguiente configuración de inicio complicada . Inspeccioné las llamadas que el enlace de "prueba de depuración" (en la respuesta de @Tyler Long anterior) estaba realizando a través de la extensión C # (Omnisharp) VS Code para resolver esto. Cosas a tener en cuenta: 1) debe proporcionar la ruta absoluta al programa dotnet 2) debe proporcionar la ruta absoluta (es decir, no puede usar ~/ o $HOME/ ) a las carpetas .nuget / packages 3) en el siguiente ejemplo, la El nombre de mi espacio de nombres de proyecto de prueba es Tests . Una vez que tenga esta configuración de inicio en su lugar, puede colocar puntos de interrupción, iniciar el depurador utilizando esta configuración y debería alcanzar todos los puntos de interrupción.

{ "name": "Debug xunit tests", "type": "coreclr", "request": "launch", "preLaunchTask": "build", "program": "/usr/local/share/dotnet/dotnet", "args": [ "exec", "--runtimeconfig", "${workspaceRoot}/AppNameHere/bin/Debug/netcoreapp1.0/AppNameHere.runtimeconfig.json", "--depsfile", "${workspaceRoot}/AppNameHere/bin/Debug/netcoreapp1.0/AppNameHere.deps.json", "--additionalprobingpath", "/Users/jdoe/.nuget/packages", "/Users/jdoe/.nuget/packages/dotnet-test-xunit/1.0.0-rc2-build10015/lib/netcoreapp1.0/dotnet-test-xunit.dll", "${workspaceRoot}/AppNameHere/bin/Debug/netcoreapp1.0/AppNameHere.dll", "-namespace", "Tests" ], "cwd": "${workspaceRoot}", "stopAtEntry": false }


Si instala el software y la biblioteca más recientes, es muy fácil de depurar:

Como puede ver en la captura de pantalla, simplemente haga clic en "prueba de depuración" y ¡depúrelo!


Ver la respuesta de Tyler Long . Los pasos a continuación no son necesarios en las versiones más recientes de Visual Studio Code :)

Hice un repositorio para demostrar.

En primer lugar, la única forma en que podía hacer que el depurador realizara la prueba era agregar un archivo, Program.cs, tomar el control del punto de entrada de xUnit y agregar manualmente el código para probar. No es lo ideal, pero imagino que no vas a hacer esto muy a menudo, y es fácil volverlo a la normalidad.

Program.cs:

using System; namespace XUnitDebugging { public class Program { public static void Main(string[] args) { var test = new TestClass(); test.PassingTest(); Console.WriteLine("Enter text..."); Console.ReadLine(); } } }

A continuación, en project.json agregue lo siguiente:

"buildOptions": { "emitEntryPoint": true, "debugType": "portable" },

proyecto.json:

{ "version": "1.0.0-*", "testRunner": "xunit", "buildOptions": { "emitEntryPoint": true, "debugType": "portable" }, "dependencies": { "Microsoft.NETCore.App": { "type": "platform", "version": "1.0.0" }, "xunit": "2.2.0-beta2-build3300", "dotnet-test-xunit": "2.2.0-preview2-build1029" }, "frameworks": { "netcoreapp1.0": { "dependencies": { "Microsoft.NETCore.App": { "type": "platform", "version": "1.0.0" } } } } }

Esto le permitirá depurar un proyecto de prueba unitaria xUnit.


La respuesta de Tyler de hacer clic en los íconos de la lente del código de debug test es la forma más fácil de depurar una sola prueba.

Una forma de probar todas las pruebas unitarias sería agregar while(!Debugger.IsAttached) Thread.Sleep(500); Dentro de las pruebas. Esto hará que las pruebas esperen hasta que adjunte un depurador.

using System; using System.Diagnostics; using System.Threading; using NUnit.Framework; namespace SomeNamespace { [TestFixture] public class SomeClassTests { [Test] public void ShouldDoTest() { while(!Debugger.IsAttached) Thread.Sleep(500); Assert.That(true, Is.True); } [Test] public void ShouldDoTest2() { while(!Debugger.IsAttached) Thread.Sleep(500); Assert.That(true, Is.True); } } }

Esto le permite adjuntar el depurador de código de Visual Studio al testhost.dll en ejecución. Simplemente seleccione .NET Core Attach y luego el dotnet testhost.dll .