15

実行中の.NETプログラムに一般的な障害を自動的に注入するためのツールや手法を知っている人はいないでしょうか。のようなもの...

  • 割り当て時にOutOfMemoryExceptionをランダムに挿入します
  • ファイルにアクセスしようとすると、FileNotFoundExceptionがランダムに挿入されます
  • ソケットの使用時に、IOまたはネットワークの例外をランダムに挿入します。

そのため、AppVerifierがネイティブWin32コードに対して行うのと同様に、CLRで特定の呼び出しをインターセプトする方法を本当に探しています。目的は、開発者が制御できない多くのエラー状態でアプリをテストし、そのような状態が処理されることを確認することです。

4

4 に答える 4

8

ランタイムフォールトインジェクションを実行できるTestAPIと呼ばれるcodeplexプロジェクトがあります。マネージコードフォールトインジェクションAPIを確認する必要があります。CLRプロファイリングAPIを使用して、実行時にメソッド呼び出しをインターセプトし、それらの動作を変更します。

を見て、すでにコンパイルされたexeのメソッド呼び出しに例外を挿入する方法を確認してください。

于 2010-02-11T01:08:02.550 に答える
5

TypemockIsolatorが最善の策のようです。

FileNotFoundExceptionテストをシミュレートするためにをスローしたい場合は、次のことができます。

プロダクションコードには、そのようなメソッドがあります

public static Project OpenProject(string filePath)

そして、テストコードでは、OpenProjectこのように呼び出しを偽造することができます

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

そして、コードがヒットOpenProjectすると、FileNotFoundExceptionがスローされます。

于 2010-02-11T01:04:45.500 に答える
2

これはあなたの求めていることと正確には一致していませんが、関連しており、アプリの例外処理を改善するという同じ目標に役立つ可能性があります。

redgate Exception Hunter http://www.red-gate.com/products/Exception_Hunter/index.htm

私はこの特定の製品を使用していませんが、私が使用した他のレッドゲート製品は素晴らしかったです。

于 2010-02-11T04:14:10.777 に答える
0

これらを「ランダムに」注入する方法はわかりませんが、通常は制御できない部分をモックアウトし、一部のテストで例外をスローすることをお勧めします。

于 2010-02-11T01:02:55.103 に答える