MSTest - модульный тест с StackOverflowException - PullRequest
6 голосов
/ 11 ноября 2010

Я написал программу на C#, которая вызывает MSTest из командной строки.Один из тестовых случаев выдает StackOverflowException и это вызывает, что QtAgent32 (и мое приложение) обрывается.Что я могу сделать, чтобы избежать этой ситуации (я не могу изменить юнит-тесты)?

Ответы [ 2 ]

3 голосов
/ 12 ноября 2010

Одним из способов избежать подобных сбоев является установка свойства legacyUnhandledExceptionPolicy в QTAgent32.exe.config (и / или QTAgent.exe.config в зависимости от разрядности компьютера / testrun), как упоминалось здесь .Соответствующий текст по этой ссылке: -

В качестве временной меры совместимости администраторы могут разместить флаг совместимости в разделе файла конфигурации приложения.Это заставляет общеязыковую среду выполнения вернуться к поведению версий 1.0 и 1.1.

Это переключит поведение обработки «необработанное исключение» на.net 1.1 и процесс не будет зависать при таких исключениях.

2 голосов
/ 11 ноября 2010

Проблема в том, что вы не можете поймать StackOverflowException в .NET (начиная с версии 2.0).Это, вероятно, означает, что нет способа решить вашу проблему - потому что среда модульного тестирования просто не может поймать исключение.

См. Следующий связанный вопрос SO:

В другом потоке есть несколько интересных предложений - например, вы можете создать Thread и проверить текущий FrameCount, чтобы обнаружить стекпереполнение ранее.Однако это, вероятно, не будет очень надежным.Так что, боюсь, нет хорошего ответа ...

...