debuggingvisual-studio-code.net-core

Debugging xUnit tests in .NET Core and Visual Studio Code


I'm on a Mac, running .NET Core 1.0 and Visual Studio Code.

I have a console project and a test project. I have setup launch.json so that I can debug the console project.

How do I set up a launch configuration that launches my unit tests and attaches the debugger?


Solution

  • See Tyler Long's answer. The steps below are not required in the newest versions of Visual Studio Code :)


    I made a repository to demonstrate.

    First off, the only way I could get the debugger to hit the test was to add a file, Program.cs, take control of the entry point from xUnit, and manually add code to test. It's not ideal, but I imagine you aren't going to be doing this very often, and it's easy to flip it back to normal.

    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();
    
            }
        }
    }
    

    Next, in project.json add the following:

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

    project.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"
            }
          }
        }
      }
    }
    

    This will allow you to debug an xUnit unit test project.