Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Debugging Nunit tests in Visual Studio C# Express 2010

I've followed this advice to get debugging working for NUnit tests.

http://www.blackwasp.co.uk/NUnitCSharpExpress.aspx

However, i have several tests that do Assert.Throws<...>, which causes the debugger to break when the exception i'm testing for occurs, when really i want it to break if an exception occurs outside of those calls.

How can i get the debugger to ignore exceptions caused from within these kinds of methods?


EDIT: I've event tried the below, which doesn't work!

[Test]
public void InstanciatingWithNullParameterThrowsException()
{
    try
    {
        Assert.Throws<ArgumentNullException>(() => new CachedStreamingEnumerable<int>(null));
        // This still throws and stops be being able to debug tests called after this one
    }
    catch
    {

    }
}
like image 304
George Duckett Avatar asked Aug 04 '11 14:08

George Duckett


People also ask

How do I debug a specific test case in Visual Studio?

To start debugging: In the Visual Studio editor, set a breakpoint in one or more test methods that you want to debug. Because test methods can run in any order, set breakpoints in all the test methods that you want to debug.


1 Answers

Here is what worked for me (although in Visual Studio Professional, not Express, but I guess that should not matter).

  • Bring up the "Exceptions" Dialog as suggested by Ninjapig.

  • Click on the Add... Button, to open the "New Exception" dialog.

  • Select "Common Language Runtime Exceptions" in the drop down box
  • In the Edit box enter "NUnit.Framework.AssertionException".
  • Click OK to close the "New Exception" dialog.
  • Back in the "Exceptions" dialog make sure that both checkboxes (Thrown and User-unhandled) are unchecked.

Now, the debugger should completely ignore a NUnit assertion failure (i.e. a thrown, caught or not, NUnit.Framework.AssertionException).

UPDATE: This will only prevent from breaking into the debugger, it cannot ignore the exception itself; i.e. it will not alter the actual program flow. Appart from changing or replacing or encapsulating the Assert-calls in try-catch blocks, I don't think there is anything that can achieve that (at least not automatically).

like image 127
Christian.K Avatar answered Oct 08 '22 04:10

Christian.K