views:

37

answers:

2

When running MSTEST unit tests in debug mode, the execution stops in every expected exception that is thrown. My test looks like this

[TestMethod()]
[ExpectedException(typeof(ArgumentNullException))]
public void ShouldThrowExceptionWhenPassingNull()
{
    object data = null;
    target.CheckNull(data);
}

the target method looks like this:

public void CheckNull(object data)
{
    if (ReferenceEquals(null, data))
    {
        throw new ArgumentNullException("data");
    }
} // test run breaks here: ArgumentNullException was unhandled by user code
+2  A: 

Did you try running the tests using ctrl-R ctrl-T instead of ctrl-R T? Refer to this link for reference.

EDIT If it's not a keyboard shortcut issue, then check out this link. You could try the following as noted there:

  1. Disable "break on user unhandled exceptions" for the exception types you you are encountering here (via Debug -> Exceptions)
  2. Disable "break on user unhandled exceptions" for all exceptions (via Debug -> Exceptions)
  3. Disable "Just My Code"
dcp
I don't use keyboard shortcuts for running tests, I use the mouse instead. I read the article and it only didn't help me since it is showing the different shortcuts for running with and without debugging. I want to debug but without stopping for expected exceptions.
Jader Dias
@Jader Dias - See my latest edit for another possible solution.
dcp
this will affect unexpected exceptions too
Jader Dias
+1  A: 

@dcp's suggestion looks like it would work for MSTEST, but you might want to consider getting TestDriven.Net. I use it as a test runner almost exclusively and don't have this problem using the right-click "Run Tests in Debug" mode. In addition I find it to be more convenient than the built-in test runner in almost all circumstances.

tvanfosson