我想知道是否有人知道将常见故障自动注入正在运行的 .NET 程序的工具或技术。之类的...
- 在分配时随机注入 OutOfMemoryException
- 尝试访问文件时随机注入 FileNotFoundException
- 使用套接字时随机注入 IO 或网络异常。
所以我真的在寻找一种方法来拦截 CLR 中的一些特定调用,类似于 AppVerifier 对本机 Win32 代码所做的。目的是在开发人员无法控制的大量错误条件下测试应用程序,并确保处理这些条件。
有一个名为TestAPI的 codeplex 项目可以进行运行时错误注入。您需要查看它的托管代码故障注入 API。它使用CLR 分析 API在运行时拦截方法调用并修改它们的行为。
查看一个示例,了解如何在已编译的 exe 中的方法调用上注入异常。
Typemock Isolator似乎是你最好的选择。
如果您想抛出 aFileNotFoundException
来模拟测试,您可以执行以下操作。
在您的生产代码中,您有这样的方法
public static Project OpenProject(string filePath)
在您的测试代码中,您可以像这样伪造OpenProject
调用
Isolate.WhenCalled(()=>Project.OpenProject(nulll)).WillThrow(new FileNotFoundException());
当你的代码命中时OpenProject
, aFileNotFoundException
将被抛出。
这与您的要求并不完全一致,但它是相关的,并且可能有助于实现改善应用程序异常处理的相同目标。
redgate 异常猎人 http://www.red-gate.com/products/Exception_Hunter/index.htm
我没有使用过这个特定的产品,但我用过的其他 redgate 产品都很棒。
我不知道如何“随机”注入这些东西,但我建议您模拟出通常不受您控制的部分,并让模拟在您的某些测试中抛出异常。