在单元测试序列中,我正在测试是否捕获到数据损坏错误(故意输入损坏的数据)。
为了将程序崩溃(例如,损坏的数据+差的缓冲区管理)视为常规的失败条件,我使用CreateProcess在子进程中运行程序。我的问题是,如果它崩溃,我会从Windows获得崩溃报告对话框,我必须关闭它才能继续进行测试序列。
有没有办法使用CreateProcess以便我可以从Windows中吞下崩溃报告?
答案 0 :(得分:3)
你无法使用CreateProcess(),子程序必须自己处理它。两种基本方式:
__try/__except
关键字来捕获和处理SEH例外在任何一种情况下尽量少做,你不知道该程序在遭受心脏病发作时处于什么状态。最好的办法是将SetEvent()作为命名事件,让主进程终止进程。
答案 1 :(得分:0)
可能最好的计划是在测试计算机上关闭Windows错误报告(XP及更早版本的Microsoft错误报告),至少在测试期间。确切的步骤取决于您的Windows版本,但它位于控制面板下。