我想知道是否有人知道将常见故障自动注入正在运行的.NET程序的工具或技术。好像......
所以我真的在寻找一种方法来拦截CLR中的一些特定调用,类似于AppVerifier对本机Win32代码的调用。目的是在开发人员控制之外的许多错误条件下测试应用程序,并确保处理这些条件。
答案 0 :(得分:8)
有一个名为 TestAPI 的codeplex项目可以执行运行时故障注入。您需要查看 managed code fault injection API 。它使用CLR profiling API在运行时拦截方法调用并修改它们的行为。
查看an example以了解如何在已编译的exe中的方法调用上注入异常。
答案 1 :(得分:5)
Typemock Isolator似乎是您最好的选择。
如果您想要FileNotFoundException
来模拟测试,可以执行以下操作。
在您的生产代码中,您有这样的方法
public static Project OpenProject(string filePath)
在您的测试代码中,您可以伪造OpenProject
这样的呼叫
Isolate.WhenCalled(()=>Project.OpenProject(nulll)).WillThrow(new FileNotFoundException());
当您的代码点击OpenProject
时,将会抛出FileNotFoundException
。
答案 2 :(得分:1)
这与您提出的要求并不完全相符,但它与您在应用中改进异常处理的目标相关,可能会有所帮助。
redgate Exception Hunter http://www.red-gate.com/products/Exception_Hunter/index.htm
我没有使用过这个特别的产品,但我用过的其他红门产品都很棒。
答案 3 :(得分:0)
我不知道怎么会“随机”注入这些东西,但我建议你嘲笑那些通常不在你控制之下的部分,并在你的一些测试中使用mock抛出异常。