在C#中模拟本机/非托管异常

出于单元测试的目的,我想在C#中生成一个本机/不受管理的 CRT 异常,以便我们可以测试发生的情况。

我可以编写一个c ++ DLL并破坏堆栈等,但是我想知道在C#中是否有很好的方法可以做到这一点。我考虑过要错误地调用Windows DLL等。

有什么方法可以在Windows 10中使用C#可靠地生成这样的异常?

yanglu06550132 回答:在C#中模拟本机/非托管异常


这是我在上面的评论的总结


是可能的。如果您想要一个更稳定的测试环境,则可以创建一个替代.NET exe(您的测试将调用该exe),该exe只调用狡猾的DLL。这样,如果进程损坏,它将仅删除代理,而不会删除您的测试过程。

您可以使用Process监视该进程何时存在(优雅地存在或不存在)。如果它记录到文件中,则说明一切正常,否则,可能会出错。您还可以使用MS UI自动化来自动单击任何运行时错误对话框的“确定”按钮。

最终结果是不需要人员的稳定测试环境。


  Process 1      |  Process 2   
  Unit tests --> |  Surrogate exe  -->  Native DLL
  C#.NET         | .NET                c/c++

本文链接:https://www.f2er.com/3127284.html

大家都在问