【问题标题】:TestStack White doesn't detect an SEHExceptionTestStack White 未检测到 SEHException
【发布时间】:2015-07-05 13:54:27
【问题描述】:

我正在为托管/非托管 Winform 应用程序编写一些测试。一些错误发生在非托管部分,并导致进程因未处理的System.Runtime.InteropServices.SEHException 异常而终止。

发生此异常时,Windows 会弹出一个消息框来解释错误。

不幸的是,MS Test 和 White 都没有意识到这一点。测试本身成功完成,没有任何错误迹象,即使我可以看到在测试继续之前弹出消息框并关闭应用程序。

如何检测这种异常?

【问题讨论】:

  • 相当模糊,Windows 不显示消息框。建议使用调试器,至少您可以显示堆栈跟踪。
  • 我不想调试代码,我想让单元测试找出发生了不好的事情。
  • 嗯,如果您不想找出代码有什么问题,那么使用单元测试毫无意义。好吧,测试失败,不应该用消息框报告令人讨厌的异常。反正一直都在发生。写一个错误报告,让程序员自己解决。
  • 这就是重点。我希望测试失败,以便以后可以调试代码。不幸的是,测试成功了。测试失败并引发托管异常。未捕获非托管异常,运行 Winforms 应用程序的进程仍处于活动状态,没有迹象表明发生了不好的事情。
  • 应用程序不显示消息框。这是标准的“您的应用程序中发生了未处理的异常。如果您单击继续,应用程序将忽略此错误....”。

标签: c++ winforms unmanaged white-framework seh


【解决方案1】:

消息框是 Winforms 应用程序默认未处理异常处理的结果。

测试完成后我最终找到了它。如果有消息框,我就没有通过测试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-30
    • 1970-01-01
    • 2017-03-24
    • 1970-01-01
    • 2018-09-20
    • 2016-02-05
    • 2017-12-16
    • 2016-10-18
    相关资源
    最近更新 更多