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

При запуске модульных тестов MSTEST в режиме отладки выполнение останавливается в каждом ожидаемом исключении, которое выбрано. Мой тест выглядит следующим образом

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

целевой метод выглядит следующим образом:

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

Ответ 1

Вы пытались запустить тесты, используя ctrl-R ctrl-T вместо ctrl-R T?

ИЗМЕНИТЬ Если это не проблема с ярлыком на клавиатуре, проверьте эту ссылку. Вы можете попробовать следующее, как указано там:

  • Отключить "прерывание пользовательских необработанных исключений" для типов исключений вы сталкиваетесь здесь (через Отладка → Исключения)
  • Отключить "прерывание пользовательских необработанных исключений" для всех исключений (через Отладка → Исключения)
  • Отключить "Только мой код"

Ответ 2

Предложение @dcp похоже, что оно будет работать для MSTEST, но вы можете захотеть получить TestDriven.Net. Я использую его как тестовый бегун почти исключительно и не имею этой проблемы, используя щелчок правой кнопкой мыши "Run Tests in Debug". Кроме того, я считаю, что это более удобно, чем встроенный тестовый бегун практически во всех обстоятельствах.

Ответ 3

CTRL + R A работает для меня без изменения какой-либо опции.

Я думаю, что проблема заключается в том, что вы запускаете тестовый проект из кнопки "Начать отладки" (F5) на панели инструментов. Если вы нажмете зеленую кнопку воспроизведения, вы остановитесь в каждом исключении, даже ожидаемом.

Чтобы выполнить все тесты без остановки в каждом исключении, нажмите: Test → Run → Все тесты в решении или используйте ярлык: CTRL + R, A

При открытии окна результатов теста CTRL + R, D также работает. В окне результатов теста становится ясно различие между прогонами тестов и отладочными тестами.