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 1:
If you install the latest software and library, it is super easy to debug:
As you can see from the screenshot, just click "debug test" and debug it!
Solution 2:
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.