C#:如何测试StackOverflowException

Svi*_*ish 18 c# stack-overflow nunit unit-testing

假设您有一种方法可能会陷入无休止的方法调用循环并且崩溃并发生StackOverflowException.例如,我RecursiveSelect这个问题中提到的天真方法.

从.NET Framework 2.0版开始,try-catch块无法捕获StackOverflowException对象,默认情况下会终止相应的进程.因此,建议用户编写代码以检测并防止堆栈溢出.例如,如果您的应用程序依赖于递归,请使用计数器或状态条件来终止递归循环.

把这些信息(来自这个答案)考虑在内,因为无法捕获异常,是否可以为这样的事情编写测试?或者对此进行测试,如果失败,实际上会打破整个测试套件?

注意:我知道我可以尝试一下,看看会发生什么,但我对它的一般信息更感兴趣.比如,不同的测试框架和测试运行器会以不同的方式处理吗?即使有可能,我应该避免这样的测试吗?

Mon*_*ong 7

你需要解决停机问题!这会让你富有而着名:)

  • 暂停问题与这个问题没有任何关系.证明退出的方法很容易导致堆栈溢出,并且方法永不退出的事实本身不会导致堆栈溢出. (7认同)