Отладчик VS2010, ломающийся на обработанном исключении - PullRequest
1 голос
/ 23 февраля 2012

У меня есть модульные тесты MS Test, которые гарантируют, что Exception выбрасывается, когда тестируемому методу дают неверные аргументы. Я использую шаблон:

My actual;
bool threw = false;
try
{
    actual = target.DoSomething(aBadParameter);
}
catch
{
    threw = true;
}

Assert.IsTrue(threw);

У меня есть CLR Exceptions, устанавливаемые для прерывания только когда пользователь не обрабатывается (не когда выбрасывается). Однако, когда DoSomething() выдает new Exception(), отладчик прерывается. Если я продолжу, юнит тест успешно завершен.

Если я вырезал и вставлял код модульного теста в основную программу и запускал его в контексте основной программы (вместо MS Test), отладчик не прерывался при исключении, обработанном пользователем.

Как предотвратить отладчик для моих исключений, обработанных пользователем?

Это не отображается на поверхности, относящейся к

Получение необработанного исключения в отладчике VS2010, даже если исключение обработано

потому что в этом случае исключение создавалось в другом потоке и перебрасывалось CLR внутри обратного вызова.

1 Ответ

2 голосов
/ 23 февраля 2012

Идиоматическим способом проверки исключений в MSTest является использование атрибута ExpectedException:

[TestMethod]
[ExpectedException(typeof(FooException))]
public void ThrowsFooExceptionWithBadInput()
{
     var actual = target.DoSomething(aBadParameter);
}
...