在 C# 中模拟 native/unmanaged 异常

Simulate native/unmanaged exception in C#

出于单元测试的目的,我想在 C# 中生成一个 native/unmanaged CRT 异常,以便我们测试会发生什么。

我可以编写一个 c++ DLL 并破坏堆栈等,但我想知道是否有在 C# 中执行此操作的好方法。我考虑过错误地调用 Windows DLL 等等

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


这是我对以上评论的总结


是的,这是可能的。如果你想拥有一个更稳定的测试环境,你可以创建一个代理 .NET exe(你的测试调用),它除了调用狡猾的 DLL 之外什么都不做。这样,如果过程被破坏,它只会取出代理而不是您的测试过程。

您可以使用 Process 监视进程何时存在(正常或不正常)。如果它记录到一个文件,你就知道一切正常,如果没有,你可以假设一个错误。您还可以使用 MS UI Automation 自动单击任何运行时错误对话框的确定​​按钮。

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


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