.NET应用程序的故障注入?

时间:2010-02-11 00:46:13

标签: .net clr fault intercept

我想知道是否有人知道将常见故障自动注入正在运行的.NET程序的工具或技术。好像......

  • 分配后随机注入OutOfMemoryException
  • 尝试访问文件时随机注入FileNotFoundException
  • 使用套接字时随机注入IO或网络异常。

所以我真的在寻找一种方法来拦截CLR中的一些特定调用,类似于AppVerifier对本机Win32代码的调用。目的是在开发人员控制之外的许多错误条件下测试应用程序,并确保处理这些条件。

4 个答案:

答案 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抛出异常。