0

未処理の例外を意図的に生成する単体テストがあります。以下を使用して、未処理の例外 (テストしたい) のハンドラーを配線しました。

AppDomain.CurrentDomain.UnhandledException += UnhandledExceptionHandler;

私のテストは次のとおりです。

LogClient client = new LogClient();        // The handler is wired up in here

Trace.TraceInformation( "About to cause an unhandled divide-by-zero exception." );

for ( int i = 10; i > -10; --i )
{
    int j = 100 / i;
    Console.WriteLine( "i={0}, j={1}", i, j );
}

Assert.NotNull( client.UnhandledException );

もちろん、例外がスローされ、NUnit がそれをキャッチしてテストに失敗します。追加してみました

[ExpectedException(typeof(DivideByZeroException))]

テストは「合格」しますが、ハンドラーが呼び出されることはなく、Assert.NotNull実行されることもありません。未処理の例外ハンドラーの単体テストを作成できるかどうか疑問に思っています。任意のポインタをいただければ幸いです。

私はVS 2010でNUnit 2.5.7を使用しています。

4

1 に答える 1

-1

ハンドラーをテストしているのではなく、ハンドラーが動作する条件をテストしています。次のような独自のクラスに Exceptionhandler を抽出することを検討してください。

    internal class AnExceptionHandler
    {
        public static void UnhandledHandler(object sender, UnhandledExceptionEventArgs args)
        {
            //Do your thing and test this. 
        }
    }

このクラスをインスタンス化し、イベントをこれに接続します。

お役に立てれば。

よろしく、モートン

于 2011-02-16T12:19:15.263 に答える