单元使用NUnit测试未处理的异常处理程序

时间:2011-02-15 17:09:43

标签: unit-testing nunit handler unhandled-exception

我有一个故意生成未处理异常的单元测试。我使用以下方法为未处理的异常(我想测试)连接了一个处理程序:

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永远不会被执行。我想知道是否可以为未处理的异常处理程序编写单元测试。任何指针都赞赏。

我正在使用NUnit 2.5.7 w / VS 2010。

1 个答案:

答案 0 :(得分:-1)

您没有测试处理程序,而是处理程序应该执行的条件。 Concider将Exceptionhandler提取到自己的类中,如:

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

实例化此类,并将事件连接到此。

希望这会有所帮助。

此致 的Morten