出于单元测试的目的,我想在C#中生成一个本机/不受管理的 CRT 异常,以便我们可以测试发生的情况。
我可以编写一个c ++ DLL并破坏堆栈等,但是我想知道在C#中是否有很好的方法可以做到这一点。我考虑过要错误地调用Windows DLL等。
有什么方法可以在Windows 10中使用C#可靠地生成这样的异常?
出于单元测试的目的,我想在C#中生成一个本机/不受管理的 CRT 异常,以便我们可以测试发生的情况。
我可以编写一个c ++ DLL并破坏堆栈等,但是我想知道在C#中是否有很好的方法可以做到这一点。我考虑过要错误地调用Windows DLL等。
有什么方法可以在Windows 10中使用C#可靠地生成这样的异常?
这是我在上面的评论的总结
是可能的。如果您想要一个更稳定的测试环境,则可以创建一个替代.NET exe(您的测试将调用该exe),该exe只调用狡猾的DLL。这样,如果进程损坏,它将仅删除代理,而不会删除您的测试过程。
您可以使用Process监视该进程何时存在(优雅地存在或不存在)。如果它记录到文件中,则说明一切正常,否则,可能会出错。您还可以使用MS UI自动化来自动单击任何运行时错误对话框的“确定”按钮。
最终结果是不需要人员的稳定测试环境。
Process 1 | Process 2
Unit tests --> | Surrogate exe --> Native DLL
C#.NET | .NET c/c++