Модульное тестирование обработчика необработанных исключений с помощью NUnit - PullRequest
0 голосов
/ 15 февраля 2011

У меня есть модульный тест, который намеренно генерирует необработанное исключение. Я подключил обработчик для необработанных исключений (которые я хотел бы проверить), используя:

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 с VS 2010.

1 Ответ

0 голосов
/ 16 февраля 2011

Вы проверяете не обработчик, а условие, в котором должен действовать обработчик. Concider извлекает обработчик исключений в свой собственный класс, например:

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

Создайте экземпляр этого класса и подключите событие к этому.

Надеюсь, это поможет.

С уважением, Morten

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...