MSTest - unit test with StackOverflowException
I wrote program in C#
that invokes MSTest
from command line.
One of test cases throws StackOverflowException
and it causes, that QtAgent32
(and my application) process breaks.
What can I do to prevent from this situation (I can't cha开发者_开发百科nge unit tests)?
One way by which you can avoid these kind of crashes is by setting the legacyUnhandledExceptionPolicy property in QTAgent32.exe.config (and/or QTAgent.exe.config depending upon the bitness of the machine/testrun) as mentioned here. Relevant text from this link is: -
As a temporary compatibility measure, administrators can place a compatibility flag in the section of the application configuration file. This causes the common language runtime to revert to the behavior of versions 1.0 and 1.1.
This will switch the "unhandled exception" handling behaviour to .net 1.1 and the process will not crash on such exceptions.
The problem is that you cannot catch StackOverflowException
on .NET (starting with the 2.0 version). This probably means that there is no way to solve the problem you have - because the unit testing framework simply cannot catch the exception.
See the following related SO question:
- C# catch a stack overflow exception.
There are some interesting suggestions on the other thread - for example, you can create Thread
and check the current FrameCount
to detect the stack overflow earlier. However, that probably won't be very reliable. So, I'm afraid there is no good answer...
精彩评论