Исполняемый файл запуска теста NUnit настроен на игнорирование исключений в не тестовых потоках.Вы можете настроить это поведение с помощью элемента конфигурации app.config:
legacyUnhandledExceptionPolicy
Вы можете настроить не тестовые потоки так, чтобы они вызывали необработанные исключения, и тогда тесты не пройдут.Предостережение заключается в том, что во время выполнения другого теста могут возникать исключения не тестовых потоков, поэтому вы можете не получить точную картину , который тест не пройден.Кроме того, поскольку это будет необработанное исключение, выполнение теста будет остановлено в момент возникновения исключения, а не продолжено, что является нормальным поведением.
Лучше, чем игнорировать, хотя, на мой взгляд.
В следующей статье подробно рассматриваются темы для тестера ReSharper, но принципы те же.
Тестер ReSharper - исключения скрытых потоков
Если выу меня есть аспекты многопоточности, с точки зрения утверждения, я считаю, что лучше установить флаги и т. д. в не тестовом потоке, дождаться завершения не тестового потока, а затем утвердить состояние в тестовом потоке.Таким образом, в основном потоке создаются исключения утверждений, и тесты запускаются, как и ожидалось.
Придуманный пример
[Test]
public void Test()
{
Exception ex = null;
Action test = () =>
{
Console.WriteLine("Async");
ex = new InvalidOperationException();
};
test.BeginInvoke(test.EndInvoke, null).AsyncWaitHandle.WaitOne();
Assert.That(ex, Is.Null, "Exception did not happen.");
}