15

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

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

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

4

4 回答 4

8

有一个名为TestAPI的 codeplex 项目可以进行运行时错误注入。您需要查看它的托管代码故障注入 API。它使用CLR 分析 API在运行时拦截方法调用并修改它们的行为。

查看一个示例,了解如何在已编译的 exe 中的方法调用上注入异常。

于 2010-02-11T01:08:02.550 回答
5

Typemock Isolator似乎是你最好的选择。

如果您想抛出 aFileNotFoundException来模拟测试,您可以执行以下操作。

在您的生产代码中,您有这样的方法

public static Project OpenProject(string filePath)

在您的测试代码中,您可以像这样伪造OpenProject调用

Isolate.WhenCalled(()=>Project.OpenProject(nulll)).WillThrow(new FileNotFoundException());

当你的代码命中时OpenProject, aFileNotFoundException将被抛出。

于 2010-02-11T01:04:45.500 回答
2

这与您的要求并不完全一致,但它是相关的,并且可能有助于实现改善应用程序异常处理的相同目标。

redgate 异常猎人 http://www.red-gate.com/products/Exception_Hunter/index.htm

我没有使用过这个特定的产品,但我用过的其他 redgate 产品都很棒。

于 2010-02-11T04:14:10.777 回答
0

我不知道如何“随机”注入这些东西,但我建议您模拟出通常不受您控制的部分,并让模拟在您的某些测试中抛出异常。

于 2010-02-11T01:02:55.103 回答