在 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++
出于单元测试的目的,我想在 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++