То, что вы можете видеть детали исключения в выходных данных, не обязательно означает, что NUnit знает об исключении.
Я использовал событие AppDomain.UnhandledException
для мониторинга подобных сценариевво время тестирования (учитывая, что исключение не обработано, что, как я полагаю, имеет место здесь):
bool exceptionWasThrown = false;
UnhandledExceptionEventHandler unhandledExceptionHandler = (s, e) =>
{
if (!exceptionWasThrown)
{
exceptionWasThrown = true;
}
};
AppDomain.CurrentDomain.UnhandledException += unhandledExceptionHandler;
// perform the test here, using whatever synchronization mechanisms needed
// to wait for threads to finish
// ...and detach the event handler
AppDomain.CurrentDomain.UnhandledException -= unhandledExceptionHandler;
// make assertions
Assert.IsFalse(exceptionWasThrown, "There was at least one unhandled exception");
Если вы хотите проверять только определенные исключения, вы можете сделать это в обработчике событий:
UnhandledExceptionEventHandler unhandledExceptionHandler = (s, e) =>
{
if (!exceptionWasThrown)
{
exceptionWasThrown = e.ExceptionObject.GetType() ==
typeof(PassedSystem.ArgumentException);
}
};