有时,当我运行单元测试时,测试运行器会抛出StackOverflowException
。有没有办法查看哪个测试可能导致问题。因为我无法找出问题所在。
有什么提示吗?还是导致此问题的一般原因?
答案 0 :(得分:0)
从StackOverflowExceptions的MSDN页面上:
在.NET Framework 1.0和1.1中,您可以捕获StackOverflowException对象(例如,从无限制的递归中恢复)。从.NET Framework 2.0开始,您无法使用try / catch块捕获StackOverflowException对象,并且默认情况下终止相应的进程。因此,您应该编写代码以检测并防止堆栈溢出。例如,如果您的应用程序依赖于递归,请使用计数器或状态条件终止递归循环。下面的示例使用一个计数器来确保对Execute方法的递归调用次数不超过MAX_RECURSIVE_CALLS常量定义的最大值
因此,这也使得Resharper也很难抓住StackOverflowException
。您应该检查代码以查看是否存在无穷的递归调用,例如方法,函数,属性。除此之外,您可以尝试使用我共享的MSDN
链接中的代码。但是您别无选择。