How to debug Nunit test in Visual Studio 2010

29,062

Solution 1

Assuming you're using a version of Visual Studio other than Express Edition then TestDriven.NET might be of use.

After installing it

  1. Set a breakpoint within your test method
  2. Right click and choose Debugger from the Test With menu
  3. The debugger should launch and hit your breakpoint

Unfortunately you can't use this method with Express editions of visual studio because TestDriven.NET is a plugin for visual studio and the Express editions do not support the use of plugins

Running a test within a console app

You can also run a test in the debugger via a console application:

  1. Create a new console application
  2. Reference your unit tests project
  3. Inside the Main method of the console application create a new instance of your test fixuture and then call one of the test methods. For example if I have a fixture named MyTests and a test named Test1 I'd write:

    var myTests = new MyTests();
    myTests.Test1();
    
  4. Set a breakpoint at the line where you create an instance of the MyTests class and press F5

  5. The debugger will hit your breakpoint and then you can use F11 to step into your TestFixture's constructor, or step over that into the test itself

Solution 2

Running or debugging NUnit tests directly with Visual Studio

Look ma' no extensions!

Simply configure your test project so that when you hit F5 (Start debugging) or Ctrl-F5 (Start without debugging) it will automatically start NUnit GUI and execute all tests within it. If any breakpoints get hit, you will also be able to simply debug your test code.

A step-by-step guide with images shows you exactly how to do it.

Laziness is the mother of all invention :-)

Solution 3

If you are using NUnit 2.4 you can put the following code in your SetUpFixture class. (You can do this with older versions but you will need to do whatever equivalent that has to the SetUpFixture, or copy it in to the test itself.)

[SetUpFixture]
public class SetupFixtureClass
{
    [SetUp]
    public void StartTesting()
    {
        System.Diagnostics.Debugger.Launch();
    }
}

What Debugger.Launch() does is cause the following dialog to show up when you click Run inside NUnit.

JIT Debugger Dialog

You then choose your running instance of visual studio with your project open (the 2nd one in my screenshot) then the debugger will be attached and any breakpoints or exceptions will show up in Visual Studio.

Share:
29,062
commando
Author by

commando

Updated on July 09, 2022

Comments

  • commando
    commando almost 2 years

    I have a problem debugging an NUnit test from VisualStudio. I created an empty project (Console Application), then I added references to the NUnit library and wrote a simple test.

    namespace ReimplementingLinq.Tests
    {
        [TestFixture]
        public class WhereTest
        {
            [Test]
            public void SimpleFiltering()
            {
                int[] source = { 1, 2, 3, 4, 2, 8, 1 };
                var result = source.Where(val => val < 4);
                int[] expected = {1,2,3,4};
                CollectionAssert.AreEqual(expected, result);
            }
        }
    }
    

    Next I followed the advice given in this link How do I run NUnit in debug mode from Visual Studio? but none of the solutions in that topic work for me. None of my breakpoints are hit while performing the test. I tried testing the solution by attaching to the process and also by running the project with an external program with arguments.

    What can I do to debug my unit test?