.NET应用程序的错误注入?

.NET应用程序的错误注入?,.net,clr,fault,intercept,.net,Clr,Fault,Intercept,我想知道是否有人知道自动将常见故障注入正在运行的.NET程序的工具或技术。像 在分配时随机注入OutOfMemoryException 尝试访问文件时随机注入FileNotFoundException 使用套接字时随机注入IO或网络异常 所以我真的在寻找一种在CLR中拦截某些特定调用的方法,类似于AppVerifier对本机Win32代码所做的。其目的是在开发人员无法控制的大量错误条件下测试应用程序,并确保这些条件得到处理。我不知道如何“随机”注入这些东西,但我建议您模拟通常不受您控制的部分

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

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

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

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

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

似乎是您的最佳选择

如果您想抛出一个
FileNotFoundException
来模拟测试,您可以这样做

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

public static Project OpenProject(string filePath)
在测试代码中,您可以像这样伪造
OpenProject
调用

Isolate.WhenCalled(()=>Project.OpenProject(nulll)).WillThrow(new FileNotFoundException());
当您的代码点击OpenProject时,将抛出一个
FileNotFoundException

似乎是您的最佳选择

如果您想抛出一个
FileNotFoundException
来模拟测试,您可以这样做

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

public static Project OpenProject(string filePath)
在测试代码中,您可以像这样伪造
OpenProject
调用

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

当您的代码点击
OpenProject
时,将抛出一个
FileNotFoundException

有一个名为的codeplex项目,可以执行运行时故障注入。您需要查看它的。它使用在运行时截获方法调用并修改其行为


查看如何在已编译的exe中的方法调用上注入异常。

有一个名为的codeplex项目可以进行运行时故障注入。您需要查看它的。它使用在运行时截获方法调用并修改其行为


查看如何在已编译的exe中为方法调用注入异常。

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

红门例外猎人


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

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

红门例外猎人


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

讽刺
拔掉你的内存?确切地说:)对于不同的资源,有很多黑客可以这样做,但它不能扩展。你不能运行AppVerifier(或类似的东西)吗在.NET运行时本身上?
Sarcasm
拔掉内存?确切地说:)有很多黑客可以针对不同的资源执行此操作,但无法扩展。您不能运行AppVerifier(或类似的工具)吗在.NET运行时本身?我感觉他在谈论大量他想要验证的代码,因此我怀疑他是否能够重新设计所有这些代码以支持模拟。我想这是他的问题,但我理解处理大量遗留代码库的困难。我看不到一种方法可以在不进行模拟重构的情况下正确地测试这些场景,但也许其他人会发现一些东西。我感觉他在谈论大量他想要验证的代码,所以我怀疑他是否能够重新设计所有这些代码来支持模拟。我想这是他的问题,但我理解处理大型遗留代码库的困难。我看不到一种方法可以在不重构模拟的情况下正确测试这些场景,但也许其他人会发现一些东西。我读了几个例子,我认为它看起来很有希望,而且它是免费的这一事实肯定会有所帮助。现在有其他选择吗?我读了几个例子,我认为它看起来很有希望,而且它是免费的这一事实肯定会有所帮助。有其他选择吗这是现在吗?