MSTest - 使用StackOverflowException进行单元测试

时间:2010-11-11 16:29:16

标签: c# mstest

我在C#中编写了从命令行调用MSTest的程序。 其中一个测试用例抛出StackOverflowException,导致QtAgent32(以及我的应用程序)进程中断。 我能做些什么来防止这种情况(我不能改变单元测试)?

2 个答案:

答案 0 :(得分:3)

可以避免这种崩溃的一种方法是在QTAgent32.exe.config中设置legacyUnhandledExceptionPolicy属性(和/或QTAgent.exe.config,具体取决于机器/ testrun的位数),如上所述{{3 }}。此链接的相关文字是: -

作为临时兼容性措施,管理员可以在应用程序配置文件的部分中放置兼容性标志。这会导致公共语言运行库恢复到版本1.0和1.1的行为。

这会将“未处理的异常”处理行为切换到.net 1.1,并且进程不会因此类异常而崩溃。

答案 1 :(得分:2)

问题是你无法在.NET上捕获StackOverflowException(从2.0版本开始)。这可能意味着没有办法解决你遇到的问题 - 因为单元测试框架根本无法捕获异常。

请参阅以下相关的SO问题:

在另一个线程上有一些有趣的建议 - 例如,您可以创建Thread并检查当前FrameCount以更早地检测堆栈溢出。但是,这可能不会非常可靠。所以,我担心没有好的答案......