2010-11-11 52 views
5

我在C#中编写了程序,它从命令行调用MSTest。 测试用例之一引发StackOverflowException,它导致QtAgent32(和我的应用程序)进程中断。 我能做些什么来防止这种情况(我不能改变单元测试)?MSTest - 使用StackOverflowException的单元测试

+0

你能分享你的C#代码吗?理想情况下,同样的对话框应该出现在C#代码中,我想知道它是否与进程startInfo参数有关? – 2010-11-12 15:55:23

回答

3

您可以避免这种类型的崩溃的一种方法是通过设置QTAgent32.exe.config(和/或QTAgent.exe.config中的legacyUnhandledExceptionPolicy属性取决于机器/ testrun的位数),如here所述。此链接的相关文本如下: -

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

这将切换“未处理的异常”处理行为到.NET 1.1和过程中不会对这样的异常崩溃。

+0

感谢您的回答。我非常有用。 – mirt 2010-11-15 21:32:48

2

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

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

有其它线程上的一些有趣的建议 - 例如,你可以创建Thread并检查当前FrameCount更早发现堆栈溢出。但是,这可能不会很可靠。所以,恐怕没有好的答案...

+0

好的,但是当我从命令行(而不是从C#代码)调用MSTest时,执行此单元测试时,我可以单击错误消息框上的取消,MSTest继续运行。我不知道如何做这样的事情,但在C#代码 – mirt 2010-11-11 16:44:10

+0

@ mirt - 你可以添加额外的信息到原来的问题?这些都是很好的细节。 – 2010-11-12 16:05:38

相关问题